Spring---->autoWire
autowire----自动装配
在定义Bean时,<bean>标签有一个autowire属性,我们可以通过指定它来让容器为受管JavaBean自动注入依赖对象。
<bean>的autowire属性有如下六个取值,他们的说明如下:
1、No:即不启用自动装配。Autowire默认的值。
2、byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入。比如说类Computer有个属性printer,指定其autowire属性为byName后,Spring IoC容器会在配置文件中查找id属性为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属性确定。
注意:在配置bean时,<bean>标签中Autowire属性的优先级比其上级标签高,即是说,如果在上级标签中<beans>中定义default-autowire属性为byName,而在<bean>中定义为byType时,Spring IoC容器会优先使用<bean>标签的配置。
ByName例子 Bean2中包含bean3属性
<!--根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。--> <bean id="bean2" class="com.ncepu.spring.Bean2" autowire="byName"/> <bean id="bean3" class="com.ncepu.spring.Bean3" />
ByType例子 Bean2中包含bean3属性
<!-- 如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean, 那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生, 属性也不会被设置。如果你不希望这样,那么可以通过设置dependency-check="objects"让Spring抛出异常。 --> <bean id="bean2" class="com.ncepu.spring.Bean2" autowire="byType" /> <bean id="bean33" class="com.ncepu.spring.Bean3" />