自动装配有四种模式,显示指定高于自动匹配规则,即bean内部显示指定依赖的bean,则不需要依赖自动装配
1.byName,其实相当于设值注入
<bean id="chinese" class="main.java.service.impl.Chinese" autowire="byName"/>
<bean id="axe" class="main.java.service.impl.SteelAxe" />
需要Chinese类有setAxe方法
2.byType,autowire-candidate属性对其生效,true表示该bean在自动装配范围内,false则不再,即过滤出去,默认为true,若出现多个匹配上的bean,则报错
其中beans有属性default-autowire-candidates="*axe",表示自动装配规则
<bean id="chinese" class="main.java.service.impl.Chinese" autowire="byType"/>
<bean id="axe" class="main.java.service.impl.SteelAxe" autowire-candidate="true" />
3.constructor,构造器匹配,与byType相似,autowire-candidate、default-autowire-candidates对其生效
多参数构造:
<bean id="chinese" class="main.java.service.impl.Chinese" autowire="constructor" >
<constructor-arg value="111" type="String" />
</bean>
<bean id="axe" class="main.java.service.impl.SteelAxe" autowire-candidate="true" />
4.autodetect,BeanFactory根据Bean内部结构,来决定使用constructor或byType