我有接口A.java和3个类,它们实现了名为B.java,C.java和D.java的A.java接口。现在我尝试像这样注入豆子。
interface A{}
@Component
@Scope("request")
class B implements A{
//......
}
@Component
@Scope("request")
class C implements A{
//.....
}
@Component
@Scope("request")
class D implements A{
}
class Implementation{
@Autowired
public A obj;
@Autowired
private BeanFactory beanFactory;
String[] beans = {"B","C","D"}; //actually these are coming from database in my case
for(String beanName : beans){
obj = (A)beanFactory.getBean(beanName);
....//calling some method of particular bean class
}
}
它显示错误消息:“找不到唯一的bean:包含多个bean [”B“,”C“,”D“]”。
如果我在XML文件中配置这些bean,它工作正常,但我不想使用xml config
如何解决这个问题使用Spring Annonantion?
答案 0 :(得分:0)
在我看来,问题在于Autowired注释,因为它将按类型进行注入,并且变量的类型为A,因此很难确定实际注入哪个bean,B, C或D.
尝试使用资源注释,决定按名称注入。或者只是添加限定符注释。
在此查看进一步说明: