创建bean时发生java错误:没有符合条件的bean,需要一个匹配的bean,但找到了3个
我在Spring MVC中有一个问题 我有4个用于DB相关方法的DAO(数据访问对象)类 其中三个是儿童班,第四个是所有学生的家长。假设A,B,C,D是4个类,A是B,C,D的父类 所以我将所有这些注释为@Repository。现在在另一节课上,让我们假设E,我是自动布线B级:
Class E {
@Autowired
B b;
..
..
}
这个很好用。 现在在另一个F班,我在做:
Class F {
@Autowired
A a;
..
..
}
现在执行此命令会产生错误:
No qualifying bean, expected single matching bean but found 3
现在我理解了这个问题,但仍然不太清楚我所缺少的是哪种基本的spring概念。有人能详细解释一下吗。 我想我错过了一门课上的限定词。但这个类不是一个接口。那么,如果我特别需要一个类的方法,而这个类在子类中不存在呢。那么限定符在这里有什么帮助呢
# 1 楼答案
Spring默认使用bean的类型来查找自动连接的匹配项。如果在ApplicationContext中找到多个相同类型的bean,那么您将得到一个错误“预期单个匹配bean,但找到了3,A,B,C”。一种使用@Qualifier查找匹配项的方法,它通过名称查找Bean
另一个选项是标记@Primary class A,然后bean A将自动连接,您可以省略@Qualifier