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

本文内容纲要:【Spring】 Spring 之 autowire(自动装配) : ByName 和 ByType

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

ImageImage

**    我们给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)**

ImageImage


ImageImage

**  2. autowire="byType"**

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

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

  

  优点:同上

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

ImageImage

**总结:    **

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

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

本文内容总结:【Spring】 Spring 之 autowire(自动装配) : ByName 和 ByType

原文链接:https://www.cnblogs.com/lovedi/p/12322328.html

以上是 【Spring】 Spring 之 autowire(自动装配) : ByName 和 ByType 的全部内容, 来源链接: utcz.com/z/296095.html

回到顶部