【Spring】 Spring 之 autowire(自动装配) : ByName 和 ByType


【爱迪】Spring 之 autowire(自动装配)  : ByName 和 ByType

 

 

 

    我们给People类里 嵌的 Dog 和 Cat 类,在 bean.xml 文件里添加配置(有一个类就要配置一个) ,

     beans.xml 在向 People 类中的这两个 类属性 注入引用 时可自动装配:

   1. autowire = "ByName" 

     ByName : 会自动在 beans.xml(容器)的上下文中查找  和自己对象中 set方法  set后面的值对应的  bean 的 id。

  比如: 上图 图二 需要再注入 cat 和 dog ,当使用 ByName 参数时:

       Spring 会将 自己类中 set方法中图二红框中内容和 beans,xml 里 我配置的 两个 Dog 和 Cat 的 bean 的 id 进行对比,结果相同则装配成功。

 

  优点:消除重复代码

    缺点:当 set后的值 与 bean 的 id 不相同,对比失败时,Spring 将无法完成自动装配,程序报错 (java.lang.NullPointerException

 

 

 


 

 

 

 

 

  2. autowire="byType"

    byType:会自动在beans.xml(容器)上下文中查找,和自己 对象的属性类型 相同的 bean。

 

 

 

   比如:此时 Spring 比对的是,beans.xml 中其他 bean 的 属性类型 是否 和自己要装配的 属性类型 相同,由于 我配置了 两个 bean 分别是 Cat 类 和 Dog 类,和 图二自己类中 两个属性的 类型 相同,所以装配成功。

  

  优点:同上

    缺点:当配置的多个bean中 有同样类型的时,Spring 将无法完成自动装配,程序出错 (提示不只有一个该类型 的bean

 

 

 

总结:    

  ByName :需要保证 beans.xml 中所有bean 的 id 唯一,并且 这个 bean 的 id 要和 自己对象中 set 后面的值的 相同。

  ByType : 需要保证 beans.xml中 所有bean的class唯一,并且 这个bean 要和 自己对象中 自动注入的 属性的类型 要一致。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM