我有一个熟悉这个bean override
的问题2个bean具有相同的ID,但它们的包是不同的。 Bean A被Bean B覆盖。 我花了很多时间找到原因。
所以我想阻止这个案子。我的请求是spring抛出异常然后关闭初始化的过程,如果遇到这样的情况。
答案 0 :(得分:0)
您可以按类型@Inject
(@Autowire
),而不是ID。请继续阅读Autowiring collaborators。
答案 1 :(得分:0)
Spring在一个上下文中不能有两个具有相同id的bean。所以解决方案显而易见 - 使用不同的ID。
如果您使用的是xml上下文,则应该是:
<bean id="foo" class="what.ever.foo.Class" />
<bean id="bar" class="what.ever.package1.Class" />
如果您正在使用注释和组件扫描:
@Component("foo")
@Component("bar")
基于注释的上下文使用不同的方法名称:
@Bean
public Foo foo() {
return new Foo();
}
@Bean
public Bar bar() {
return new Bar();
}