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源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段