spring自动注入之default-autowire-candidates、autowire-candidate、default-autowire、autowire的总结分析

spring的xml配置关于自动配置的属性有四个default-autowire-candidates、autowire-candidate、default-autowire、autowire四个属性。

default-autowire-candidates和autowire-candidate是作用与注入者,default-autowire和autowire是作用于被注入者,什么是注入者,什么是被注入者,一下面为例:

public class Mi1 {
    public  Mi6 mi6;

   ....省略get和set方法 
}

==================对象分割线

public class Mi6 {
 

}

这里面Mi6称之为注入者,Mi1称之为被注入者。

 

default-autowire-candidates是beans上的属性,它是一个集合,告诉bean的容器,哪些可以做自动注入,哪些不可以,它支持按照bean的名称模糊匹配。

autowire-candidate是作用于单个bean标签上的,它只有false或true两个值,默认值是false,他表明了这个bean可以不可以被自动注入到别的bean。

default-autowir:自动注入类型,有四个值,不自动注入,按照bean的名称自动注入,按照bean的类型自动注入,按照构造参数注入,标签应用于beans上。

autowire:标签应用于bean上,功能和default-autowir一样。

 

下面将举例说明这四个标签的作用:

 

==================案例A说明========

案例A1:

<beans default-autowire-candidates="">

    <bean name="mi1" class="com.ansel.test.Mi1" autowire="byType"/>

    <bean name="mi6" class="com.ansel.test.Mi6" />

</beans>

案例A2:

<beans default-autowire-candidates="mi6*">

    <bean name="mi1" class="com.ansel.test.Mi1" autowire="byType"/>

    <bean name="mi6" class="com.ansel.test.Mi6" />

</beans>

在案例A1中,因为beans指定了default-autowire-candidates="",default-autowire-candidates的值并不会匹配mi6,所以即便mi1指定了按照类型注入,mi6也不会自动注入的。

在案例A2中,因为beans指定了default-autowire-candidates="mi6*",default-autowire-candidates的值会匹配mi6,所以mi6会自动注入的。

==================案例A说明结束========

==================案例B说明举例========

案例B1:

<beans>

    <bean name="mi1" class="com.ansel.test.Mi1" autowire="byType"/>

    <bean name="mi6" class="com.ansel.test.Mi6"  autowire-candidate="false" />

</beans>

案例B2:

<beans>

    <bean name="mi1" class="com.ansel.test.Mi1" autowire="byType"/>

    <bean name="mi6" class="com.ansel.test.Mi6"  autowire-candidate="true" />

</beans>

案例B1和案例A1的结果是一样的,案例B2和案例A2的结果是一样。

====================案例B说明举例结束==============

总结:

在被注入者指定 autowire="byType"时,autowire-candidate和default-autowire-candidates才起作用,如果是按照名称,则不起作用。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值