基于xml的spring应用
XML配置方式: 功能描述:
bean的id和全限定名配置
通过name设置bean的别名,通过别名也能直接获取到bean实例
bean的作用范围
bean的实例化时机,是否延迟加载
bean实例化后自动执行的初识方法,method指定方法
bean实例销毁前的方法
设置自动注入模式
<bean factory-bean="factory-method=""/"> 指定工厂完成bean的创建。
小细节:
当为配置的时候,getBean("");中,得到的会是权限名。
name为别名
scope的类型有两种:prototype和singleton
其中,singleton为默认,当spring容器刚开始创建时,就已经进行了bean的实例化
prototype为创建时,不会进行bean的实例化,但每次使用getbean方法方法时,就进行一次bean的实例化。
singleton实例:
com.zzz.service.impl.UserServiceImpl@7b227d8d
com.zzz.service.impl.UserServiceImpl@7b227d8d
com.zzz.service.impl.UserServiceImpl@7b227d8d
prototype实例:
com.zzz.service.impl.UserServiceImpl@7b227d8d
com.zzz.service.impl.UserServiceImpl@7219ec67
com.zzz.service.impl.UserServiceImpl@45018215
创建对象后,创建初始化方法,在创建实例前首先执行需要的方法,有两种途径实现目的:
1.创建init-method初始化方法
2.实现接口InitializingBean,并且实现afterPropertiesSet方法
Spring实例化方式,也就是Spring创建bean的方式:
构造方式实例化:底层通过构造方法对bean进行实例化
工厂化方式实例化:底层通过调用自定义的工厂方法对bean进行实例化。
实例化的方式-构造方法方式:
public UserServiceImpl(String name){
System.out.println("UserService有参构造");
}
public UserServiceImpl(){
System.out.println("UserService无参构造");
}
实例化时,默认为无参构造优先,需要配置有参构造时,需要配置aplicationContext.xml文件
就会优先优先输出有参构造方法。
注意:constructor-arg为构造参数,但是注意构造参数不仅是构造方法的参数,只要需要传参数时,都可以使用constructor-arg标签进行传输。
工厂化实例bean,又分为以下三种:
1.静态工厂方法实例化bean
2.实例工厂方法实例化bean
3.实现factoryBean规范延迟实例化bean