Инициализация:
@Autowired, @Value и т.д.).setBeanName() (если Bean реализует BeanNameAware).setBeanFactory() (если Bean реализует BeanFactoryAware).setApplicationContext() (если Bean реализует ApplicationContextAware).postProcessBeforeInitialization() методов BeanPostProcessor.@PostConstruct аннотированные методы.initMethod определения Bean-а.afterPropertiesSet() (если Bean реализует InitializingBean).postProcessAfterInitialization() методов BeanPostProcessor.Использование:
Уничтожение (при завершении контекста Spring):
postProcessBeforeDestruction() методов DestructionAwareBeanPostProcessor.@PreDestroy аннотированные методы.destroyMethod определения Bean-а.destroy() (если Bean реализует DisposableBean).postProcessAfterDestruction() методов DestructionAwareBeanPostProcessor.java
| Шаг | Описание | Пример |
|---|---|---|
| 1 | Создание экземпляра Bean | new MySpringBean() |
| 2 | Заполнение свойств (DI) | bean.setMyProperty("value") |
| 3 | BeanNameAware.setBeanName() | Вызывается если Bean реализует интерфейс BeanNameAware |
| 4 | BeanFactoryAware.setBeanFactory() | Вызывается если Bean реализует интерфейс BeanFactoryAware |
| 5 | ApplicationContextAware.setApplicationContext() | Вызывается если Bean реализует интерфейс ApplicationContextAware |
| 6 | BeanPostProcessor.postProcessBeforeInitialization() | Обработка до инициализации |
| 7 | InitializingBean.afterPropertiesSet() | Вызывается если Bean реализует интерфейс InitializingBean |
| 8 | @PostConstruct метод | Метод, аннотированный @PostConstruct |
| 9 | init-method из конфигурации | Метод, указанный в атрибуте initMethod |
| 10 | BeanPostProcessor.postProcessAfterInitialization() | Обработка после инициализации |
| 11 | Bean готов к использованию | Вызов методов Bean-а |
| 12 | DestructionAwareBeanPostProcessor.postProcessBeforeDestruction() | Обработка до уничтожения |
| 13 | DisposableBean.destroy() | Вызывается если Bean реализует интерфейс DisposableBean |
| 14 | @PreDestroy метод | Метод, аннотированный @PreDestroy |
| 15 | destroy-method из конфигурации | Метод, указанный в атрибуте destroyMethod |
| 16 | DestructionAwareBeanPostProcessor.postProcessAfterDestruction() | Обработка после уничтожения |