java - Spring ConflictingBeanDefinitionException 与现有的、不兼容的同名和类的 bean 定义冲突

标签 java spring dependency-injection

我遇到了与 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 重命名为 ChildAChildB

关于java - Spring ConflictingBeanDefinitionException 与现有的、不兼容的同名和类的 bean 定义冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49250799/

相关文章:

java - Spring Mvc Controller 部分未加载。?

spring - 如何验证 Spring MVC @PathVariable 值?

java - 如何在 Spring 4.2 或更高版本中设置 Cache-control : private with applicationContext. xml

c# - 在需要时从接口(interface)转换为某个具体类是一种好习惯吗?

java 套接字 writeUTF() 和 readUTF()

java - 使用注释和 lombok 的字段切入点

java - 使用双括号初始化连接列表

java - 如何从netbeans中的另一个类方法调用java swing jpanel?

php - 如何在带有命令的独立应用程序中使用来自 symfony 的 DependencyInjection?

java - 根据类的类型将 Map<String,Object> 注入(inject)到构造函数中