答案 0 :(得分:1)
你必须使用Qualifier
。使用Qualifier
,您可以指定要注入的类的实例。假设你的bean定义是这样的
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<bean id="beanA" class="com.example.common.InterfaceX"/>
<bean id="beanB" class="com.example.common.InterfaceX"/>
</beans>
像这样使用@Qualifier
public class SomeRandomClass {
@Autowired
@Qualifier("beanA")
private InterfaceX bean1;
@Autowired
@Qualifier("beanB")
private InterfaceX bean2;
//...
}
注意:我已根据您的术语更改了示例代码。整个过程实际上和往常一样。首先在bean配置文件中声明你的bean(这是beanA和beanB是什么),然后在你想要使用的类中@Autowired
它。现在你的问题是你正在尝试注入两个相同类的bean吗?因此,为了区分这两个bean,你必须有一些方法来告诉spring哪个是@Qualifier
所在的那个和哪个。当声明那些bean时你给那些bean id是对的?使用带有id的@Qualifier
,您可以指定实际要注入的bean。我希望能让事情变得清晰。如果您仍然有任何困惑,请查看here。