如何避免具有相同ID的bean?

时间:2016-07-18 12:02:04

标签: java spring inject

我有一个熟悉这个bean override

的问题

2个bean具有相同的ID,但它们的包是不同的。 Bean A被Bean B覆盖。 我花了很多时间找到原因。

所以我想阻止这个案子。我的请求是spring抛出异常然后关闭初始化的过程,如果遇到这样的情况。

2 个答案:

答案 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();
   }