几个比较难理解的属性,在此重点介绍下作用及如何使用
一、autowire属性值有
1、 No:即不启用自动装配。Autowire默认的值。
2、 byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入。比如说类Computer有个属性printer,指定其autowire属性为byName后,Spring IoC容器会在配置文件中查找id/name属性为printer的bean,然后使用Seter方法为其注入。
3、 byType:通过属性的类型查找JavaBean依赖的对象并为其注入。比如类Computer有个属性printer,类型为Printer,那么,指定其autowire属性为byType后,Spring IoC容器会查找Class属性为Printer的bean,使用Seter方法为其注入。
4、 constructor:与byType一样,也是通过类型查找依赖对象。与byType的区别在于它不是使用Seter方法注入,而是使用构造子注入。
5、 autodetect:在byType和constructor之间自动的选择注入方式。
6、 default:由上级标签<beans>的default-autowire属性确定。
二、depends-on
1、若A depends-on B 意思是实例化A之前必须先实例化B,但A不需要持有B的实例
三、dependency-check属性值
1、simple 只检查简单的属性是否完成依赖关系
2、objects 检查对象类型的属性是否完成依赖关系
3、all检查全部的属性是否完成依赖关系
4、none默认值,表示不检查依赖性
四、singleton属性值指定此Java Bean是否采用单例(Singleton)模式
1、false则通过BeanFactory获取此Java Bean实例时,BeanFactory每次都将创建一个新的实例返回。
2、true(默认) 则在BeanFactory作用范围内,只维护此Java Bean的一个实例,代码通过BeanFactory获得此Java Bean实例的引用。
五、factory-bean通过实例工厂方法创建bean,class属性必须为空,factory-bean属性必须指定一个bean的名字,这个bean一定要在当前的bean工厂或者父bean工厂中,并包含工厂方法。而工厂方法本身通过factory-method属性设置
六、scope属性值
1、 singleton:每次调用getBean的时候返回相同的实例.这个是默认,也就是单实例
2、 prototype:每次调用getBean的时候返回不同的实例.这个是多实例/
3、request、session、global session在web应用中使用
七、autowire-candidate是否作为其他Bean自动装配的候选者,设置为flase这样容器在查找自动装配对象时,将不考虑该bean
1、不设置该属性值或该属性值为default,则取Beans元素default-autowire-candidates属性值中是否配置了该Bean的beanName,如果配置了,则作为自动装配的候选者
2、该属性值为false,此Bean不作为自动装配的候选者
3、该属性值为true,此Bean作为自动装配的候选者
八、子元素Qualifier
1、<bean id="" type="*.DataSource"><qualifier type="org.springframework.beans.factory.annotation.Qualifier" value="mysqlDataSource(限定标识符)"/> </bean>
public void initDataSource(@Qualifier("mysqlDataSource") DataSource dataSource) {
this.dataSource = dataSource;
}
Spring在选择候选者Bean时,将在IOC容器中查找限定标识符为“mysqlDataSource”的Bean注入给initDataSource方法的形参dataSource
九、primary属性为true,自动装配时当出现多个Bean的候选者时,属性primary=true的Bean被作为首选者,不然将抛出异常
10、factory-method,创建Bean的工厂方法。 factory-bean工厂Bean,与factory-method配合使用,通过factory-bean的factory-method 创建Bean