Spring的@Autowired如何自动装配在bean配置文件中声明的两个类似的bean呢?
来源:互联网 发布:浙江大数据交易中心 编辑:程序博客网 时间:2024/05/16 13:04
Spring的@Autowired注解是如法分辨出两个类似的bean,也就是说如果配置文件中出现两个类似的bean@Autowired注解将无法实现自动装配功能。
只有一个bean的实例:
public class Customer {
@Autowired
private Person person;
//...
}
只有一个bean的配置文件如下:
<beans xmlns="http://www.springframework.org/schema/beans";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:context="http://www.springframework.org/schema/context";
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">;
<context:annotation-config />
<bean id="CustomerBean" class="com.yiibai.common.Customer">
</bean>
<bean id="PersonBean" class="com.yiibai.common.Person">
<property name="name" value="yiibai" />
<property name="address" value="address ABC" />
<property name="age" value="29" />
</bean>
</beans>
通常情况下@Autowired会根据配置文件信息,自动给Customer类中的person属性装配PersonBean值。但是如果此时配置文件里面还有一个person实例,如下所示,有两个bean的配置文件:
<beans xmlns="http://www.springframework.org/schema/beans";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:context="http://www.springframework.org/schema/context";
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">;
<context:annotation-config />
<bean id="CustomerBean" class="com.yiibai.common.Customer">
</bean>
<bean id="PersonBean1" class="com.yiibai.common.Person">
<property name="name" value="yiibai" />
<property name="address" value="address ABC" />
<property name="age" value="29" />
</bean>
<bean id="PersonBean2" class="com.yiibai.common.Person">
<property name="name" value="yiibai" />
<property name="address" value="address ABC" />
<property name="age" value="29" />
</bean>
</beans>
这个时候,@Autowired就无法决定该选择哪一个personbean来装配person属性。因此,需要引入@Qualifier注解用来控制应该使用哪一个来自动装配,如下所示:
public class Customer{
@Autowired
@Qualifier("PersonBean1")
private Person person;
}
阅读全文
0 0
- Spring的@Autowired如何自动装配在bean配置文件中声明的两个类似的bean呢?
- spring中bean的自动装配(6)
- spring中bean的自动装配
- Spring中Bean的自动装配
- spring框架中Bean的自动装配
- [Spring]Bean的自动装配
- # Spring Bean 的自动装配
- spring bean的自动装配
- spring bean的自动装配
- Spring的自动装配Bean
- Spring bean的自动装配
- 【Spring】Bean的自动装配
- Spring Bean的自动装配
- Spring bean的自动装配
- spring <bean>的自动装配
- Spring Bean的装配 -- 自动装配
- spring中Bean的装配
- bean的自动装配
- 通讯录名片扫描识别的功能SDK
- redis的安装
- PHP面试题
- Git 命令收集
- HTTP协议之报文详解
- Spring的@Autowired如何自动装配在bean配置文件中声明的两个类似的bean呢?
- protoc3.5报文件不存在
- C 语言对于存储区域及指针的概念总结
- Laravel入门教程(七)- 表单Controller
- 统计某个字段中各个字符出现的次数
- 侧拉+TabLayout+轮播+XListView
- sqlite 的 limit
- linux 安装redis4.0.2
- Gradle插件开发 APK瘦身资源自定义7z压缩