Для чего нужны бобовые фабрики, если мы можем использовать @component? - PullRequest
1 голос
/ 14 апреля 2020

Недавно я увидел такой код:

@Bean
@Validated
@ConfigurationProperties(prefix = "jobrunner.filesystem")
public ExecutionFileSystemProperties executionFileSystemProperties() {
    return new ExecutionFileSystemProperties();
}

Почему это? Мы можем использовать @Component, и Spring найдет их самостоятельно

PS В этом же проекте есть @Component, @service, et c.

1 Ответ

3 голосов
/ 14 апреля 2020

из этого ответа от skaffman: Spring: @Component против @ Bean

@ Component и @Bean делают две совершенно разные вещи, и их не следует путать.

@ Component (и @Service и @Repository) используются для автоматического обнаружения и автоматической настройки bean-компонентов с использованием сканирования пути к классам. Существует неявное взаимно-однозначное соответствие между аннотированным классом и компонентом (т. Е. Один компонент на класс). При таком подходе управление проводкой весьма ограничено, поскольку оно является чисто декларативным.

@ Bean используется для явного объявления одного компонента, а не для того, чтобы Spring мог сделать это автоматически, как описано выше. Он отделяет объявление bean-компонента от определения класса и позволяет создавать и настраивать bean-компоненты в точности так, как вы выбираете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...