Spring: Почему afterPropertiesSet InitializingBean необходим, когда у нас также есть пользовательские init () или @PostConstuct - PullRequest
0 голосов
/ 21 мая 2018

Почему afterPropertiesSet из InitializingBean необходимо, если у нас есть также пользовательские init() @Bean(initMethod = "init") или @PostConstuct?Какие действия я могу сделать с одним и не делать с другим?Когда я должен использовать один, а не другой.Все обратные вызовы запускаются после автоматического подключения всех свойств.

1 Ответ

0 голосов
/ 21 мая 2018

Как правило, если компонент реализует InitializingBean, сначала вызывается @PostConstruct, затем afterPropertiesSet, а затем init-method.

Spring bean lifecycle

@PostConstruct - это аннотация JSR-250, тогда как init-method и InitializingBean - это инструменты Spring для инициализации bean-компонента.

InitializingBean против init-метода

Выбор между инструментами Spring, init-method и destroy-method - рекомендуемый подход, поскольку нет прямой зависимости от Spring Framework, и мы можем создавать свои собственные методы.,init-method - это способ вызова пользовательского метода, независимого от Spring, если вы решите использовать какой-то другой фреймворк, вы можете использовать этот метод повторно.

PostConstruct против Spring tools

Документация Spring предоставляет четкое объяснение предпочтительных способов инициализации:

Чтобы взаимодействовать с управлением контейнером жизненного цикла бина, вы можете реализовать интерфейсы Spring InitializingBean и DisposableBean.Контейнер вызывает afterPropertiesSet() для первого и destroy() для последнего, чтобы компонент мог выполнять определенные действия при инициализации и уничтожении ваших бинов.

Аннотации JSR-250 @PostConstruct и @PreDestroyобычно считаются лучшей практикой для получения обратных вызовов жизненного цикла в современном приложении Spring.Использование этих аннотаций означает, что ваши компоненты не связаны с интерфейсами, специфичными для Spring.

...