Spring Статические методы - PullRequest
0 голосов
/ 30 июня 2018

Я учу Spring, и книга, которую я читаю, имеет следующую строку кода

@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
}

Зачем нужно ключевое слово static, нормально ли объявлять аннотацию @Bean для статических методов, если да, то почему?

1 Ответ

0 голосов
/ 30 июня 2018

Объект PropertySourcesPlaceholderConfigurer является BeanFactoryPostProcessor, поэтому, согласно документации Spring :

Особое внимание должно быть уделено @Bean методам, которые возвращают Пружина BeanFactoryPostProcessor (BFPP) типов. Потому что объекты BFPP должны быть созданы очень рано в жизненном цикле контейнера , они могут мешать обработке аннотаций, таких как @Autowired, @Value, и @PostConstruct в пределах @Configuration классов. Чтобы избежать этого проблемы жизненного цикла, отметьте возвращающие BFPP методы @Bean как static.

Помечая этот метод как статический, он может быть вызван без создание экземпляра класса @Configuration, что позволяет избежать вышеупомянутые конфликты жизненного цикла. Обратите внимание, что статический @Bean методы не будут улучшены для определения объема и семантики АОП, так как упомянутое выше. Это работает в случаях BFPP, так как они не на которые обычно ссылаются другие @Bean методы. В качестве напоминания, Сообщение журнала уровня WARN будет выдано для любых нестатических методов @Bean с типом возврата, присваиваемым BeanFactoryPostProcessor.

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