Как правило, если компонент реализует InitializingBean
, сначала вызывается @PostConstruct
, затем afterPropertiesSet
, а затем init-method
.
![Spring bean lifecycle](https://i.stack.imgur.com/th3V1.jpg)
@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.