@Autowired
按类型查找bean。如何使用自动装配的注释将bean按名称注入构造函数?
我有2个相同类型的bean但我需要根据bean名称将它注入另一个相同类的构造函数。我该怎么做?
XML:
<bean id="A" class="com.Check"/>
<bean id="B" class="com.Check"/>
爪哇:
Class C {
private Check check;
@Autowired
public C(Check check){
this.check = check
}
}
当我这样做时,我得到一个例外,告诉我我有2个相同类型的bean检查,但它要求只有一个这种类型的bean。如何通过构造函数注入将带有id="B"
的bean注入此类C
?
在applicationContext.xml
我提到autowire="byType"
。我只需要在这个特定的课程中自动装备byName
所有需要通过仅限类型进行自动装配
答案 0 :(得分:23)
您应该将@Qualifier注释与目标bean id一起用于构造函数参数。
<bean id="A" class="com.Check"/>
<bean id="B" class="com.Check"/>
Class C {
private Check check;
@Autowired
public C(@Qualifier("A") Check check){ //<-- here you should provide your target bean id
this.check = check
}
}