Весна: Конфигурация - PullRequest
       20

Весна: Конфигурация

1 голос
/ 08 мая 2019

В конфигурации Spring Java, предположим, я хочу повторно использовать @Bean в другом определении @Bean. Я могу сделать это либо в одном файле:

@Bean
public A buildA() {
    return new A();
}

@Bean
public B buildB() {
    return new B(buildA());
}

или я могу настроить A в одном файле и автоматически связать его в другом файле, например (поле для краткости):

@Autowired
private A a;

@Bean
public B buildB() {
    return new B(a);
}

Интересно, а две возможности одинаковы? Для меня это выглядит так, как будто первая версия может дважды установить A, а вторая - нет.

Я спрашиваю об этом, поскольку в моем случае особого использования A устанавливает соединение с брокером обмена сообщениями, и у меня есть несколько B, которые используют поток (я использую .toReactivePublisher() из Spring интеграции в A), и я не ' не хочу дважды или больше подключаться к брокеру.

1 Ответ

5 голосов
/ 08 мая 2019

Да, они точно такие же.Несколько вызовов аннотированного метода @Bean не создадут несколько экземпляров одного и того же компонента.

Для объяснения причин, по которым это не происходит, см. этот ответ .

...