Spring引用类型自动注入

Posted 王六六的IT日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring引用类型自动注入相关的知识,希望对你有一定的参考价值。

引用类型自动注入

spring根据byName,byType规则给引用类型赋值
对于引用类型属性的注入,也可不在配置文件中显示的注入。可以通过为<bean/>标签设置 autowire 属性值,为引用类型属性进行隐式自动注入(默 认是不自动注入引用类型属性)。
根据自动注入判断标准的不同,可以分为两种:

  • byName:根据名称自动注入
  • byType: 根据类型自动注入

1.byName(按名称注入)

java类中引用类型的属性名称和spring容器中bean的id名称一样,且数据类型一样的, 这样的bean能够赋值给引用类型。

语法:

<bean id="xxx" class="yy" autowire="byName">
          简单类型属性赋值
</bean>

2.byType(按类型注入)

java类中引用类型的数据类型和bean的class是同源的,这些的bean能够赋值给引用类型。
同源关系:
1.java中引用类型的数据类型和bean的class值是一样的。
2. java中引用类型的数据类型和bean的class值是父子类关系的。
3. java中引用类型的数据类型和bean的class值是接口和实现类关系的。

语法:

<bean id="xxx" class="yy" autowire="byType">
          简单类型属性赋值
</bean>

1>第一种同源关系:java中引用类型的数据类型和bean的class值是一样的。

2>第二种同源关系: java中引用类型的数据类型和bean的class值是父子类关系的。


注意: 在xml配置文件中, 符合条件的对象,只能有一个。多余一个是报错的。👇

运行test----报错:
Caused by:
org.springframework.beans.factory.NoUniqueBeanDefinitionException:
No qualifying bean of type ‘com.bjpowernode.bao5.School’ available:
expected single matching bean but found 2: myschool,primarySchool

3>第三种同源关系:java中引用类型的数据类型和bean的class值是接口和实现类关系的。

以上是关于Spring引用类型自动注入的主要内容,如果未能解决你的问题,请参考以下文章

阶段3 2.Spring_04.Spring的常用注解_5 自动按照类型注入

Spring一文带你吃透基于XML的DI技术

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

Spring -- Spring配置文件详解(Bean的依赖注入的数据类型(基本类型引用类型集合类型))

自动装配有哪些方式?