有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

创建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) 个答案

  1. # 1 楼答案

    Spring默认使用bean的类型来查找自动连接的匹配项。如果在ApplicationContext中找到多个相同类型的bean,那么您将得到一个错误“预期单个匹配bean,但找到了3,A,B,C”。一种使用@Qualifier查找匹配项的方法,它通过名称查找Bean

    @Component class A implements DAO {...}
    @Component class B implements DAO {...}
    
    class F {
    @Autowired
    @Qualifier('a') //lowercase "a" will be the default bean name for A
    A a;
    

    另一个选项是标记@Primary class A,然后bean A将自动连接,您可以省略@Qualifier