【发布时间】:2022-12-21 03:12:35
【问题描述】:
我知道,不能有两个同名的不同类的 bean——至少在理论上是这样,但我想知道,为什么不考虑类的包?
例如:
两个完全独立的类,没有公共接口。
com.company.application.foo.Bar
与 DI 框架相同
com.company.application.bar.Bar
但是如果您尝试将一个分配给另一个,编译器当然会看到差异并抱怨。
更令人困惑的是,如果两个 bean 都是包私有的——没有私有/公共修饰符,只在它们的包中可见,为什么会出现冲突?
根据定义,无处不存在冲突,但 Spring 发现了一个问题并且没有任何区别并产生:
org.springframework.context.annotation.ConflictingBeanDefinitionException:bean 类 [com.company.bar.Bar] 的注释指定的 bean 名称“myComponent”与同名和类 [com.company.foo] 的现有不兼容 bean 定义冲突。酒吧]
为什么决定只查看 bean 的名称,而不是完整的包路径和名称?
【问题讨论】:
标签: java spring spring-boot dependency-injection