1. Инстанцирование объекта. Техническое начало жизни бина, работа конструктора его класса;
2. Установка свойств из конфигурации бина, внедрение зависимостей;
3. Нотификация aware-интерфейсов.
BeanNameAware
, BeanFactoryAware
и другие. Мы уже писали о таких интерфейсах ранее. Технически, выполняется системными подтипами BeanPostProcessor
, и совпадает с шагом 4;4. Пре-инициализация – метод
postProcessBeforeInitialization()
интерфейса BeanPostProcessor
;5. Инициализация. Разные способы применяются в таком порядке:
• Метод бина с аннотацией
@PostConstruct
из стандарта JSR-250 (рекомендуемый способ);• Метод
afterPropertiesSet()
бина под интерфейсом InitializingBean
;• Init-метод. Для отдельного бина его имя устанавливается в параметре определения
initMethod
. В xml-конфигурации можно установить для всех бинов сразу, с помощью default-init-method
;6. Пост-инициализация – метод
postProcessAfterInitialization()
интерфейса BeanPostProcessor
.