Как избежать бобов с одинаковым идентификатором?

java spring inject

347 просмотра

2 ответа

44 Репутация автора

У меня есть проблема, знакомая с этим переопределением бина

2 боба имеют одинаковый идентификатор, но их упаковка отличается. Бин A был отменен бином B. Я потратил много времени, чтобы найти причину.

Поэтому я хочу предотвратить это дело. Моя просьба, чтобы пружина вызвала исключение, а затем остановила процесс инициализации, если возникнет такой случай.

Автор: Tiysee Источник Размещён: 18.07.2016 12:02

Ответы (2)


0 плюса

3023 Репутация автора

Вы можете @Inject( @Autowire) по типу, а не по идентификатору. Читайте на Autowiring соавторов .

Автор: jediz Размещён: 18.07.2016 12:22

0 плюса

1242 Репутация автора

Spring не может иметь двух бинов с одинаковым идентификатором в одном контексте. Таким образом, решение очевидно - используйте разные идентификаторы.

Если вы используете контекст 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();
   }
Автор: Ivan Lymar Размещён: 19.07.2016 09:08
Вопросы из категории :
32x32