Spring自动绑定技术

Autowiring collabraotors自动绑定
    1、 byType   根据类型自动绑定,如果同种类型的实例在容器中不是唯一的,将会产生异常
           byName  根据属性名查找相同的实例名绑定,如属性名master,Spring 将会找名字为master的实例
           constrctcor  类似于byType,在容器中找和类型一致的唯一的bean实例,如果没有找到会产生异常
           autodetect   根据反射到类的情况,如果发现有默认的构造器就会使用byType,否则使用constrctor
          不管是哪种类型的绑定,spring都是先在本容器中查找,如果没有匹配的再到父容器中查找。
     2、自动绑定带来的好处
              1、简化了配置文件,无需再显式的写出依赖关系
              2、自动绑定使你的配置自动更新,如:你在一个类中新加了个依赖,spring会自动帮你完成绑定,你无需更改配置文件。
           自动绑定带来的坏处
              1、自动绑定使配置容易产生歧义相对显示的写出这些依赖关系,不能过明显的看出类之间的依赖关系;
              2、自动绑定的信息不会被自动文档工具生成
              3、当你使用byType来绑定,如果容器中同种类型存在多个对象将会产生异常,spring提供了3个机制来解决这样的问题
                      1、取消自动绑定,用显式的方式指明属性的依赖关系
                      2、通过在bean定义时指定将不作为自动绑定对象依赖,将autowire-candiate 属性值设为false
                      3、如果使用的jdk版本在5.0以上可以使用标注来解决
Excluding a bean from being available for autowiring排除某个bean被自动绑定
      1、定义bean时设置autowire-candiate的属性为false
      2、在最高层<beans>里定义default-autowire-candiates属性为一些表达式,如限制一些bean是以Repository结尾的才支持自动绑定可以定义成“*Repository”。如果支持多

个格式,可以以逗号隔开这个表达式。
      3、bean中autowire-candiate的定义后优先级高于beans里定义的default-autowire-candiates,对于这样的bean,default-autowire-candiates不再会起效。
      注:如果在容器有父容器情况时,相同类型的bean实例同样也会被检测到,因此父容器的bean实例同样也需要考虑!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值