我遇到了与 this 相同的问题。我知道如何解决这个问题,但我不知道为什么会发生这种情况。
如this提到过,默认情况下,spring 注入(inject)是按类型
,而不是按名称
。这就是为什么我们可以将实现注入(inject)到接口(interface)中。
在我的 Spring Web 应用程序中,我注入(inject)相应的接口(interface),在按类型解析时,它应该找到确切的具体类,但我遇到异常 ConflictingBeanDefinitionException
:
interface A;
interface B;
Class com.level1.Child implements A;
Class com.level2.Child implements B;
@Autowired
private B b; // expecting com.level2.Child obviously!
怎么会呢?有更好的方法来解决这个问题吗?这非常烦人,因为我需要在很多变量处注释Qualifier
,因为我的应用程序的不同包中有许多相同的类名。
最佳答案
如果使用相同名称定义了多个 Bean,则后面定义的 Bean 将覆盖前面定义的 Bean。
我建议您将 Childs
重命名为 ChildA
和 ChildB
。
关于java - Spring ConflictingBeanDefinitionException 与现有的、不兼容的同名和类的 bean 定义冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49250799/