По порядку Middle Бины: скоупы и жизненный цикл обновлено
Этапы жизненного цикла бина
Вопрос
Расставьте этапы создания singleton-бина по порядку.
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1BeanPostProcessor.postProcessBeforeInitialization и @PostConstruct
- 2afterPropertiesSet() и initMethod
- 3BeanPostProcessor.postProcessAfterInitialization: создание прокси
- 4Aware-колбэки (BeanNameAware, ApplicationContextAware)
- 5Вызов конструктора
- 6Внедрение зависимостей в поля и сеттеры
Показать ответ и разбор
Коротко
@PostConstruct обрабатывается BeanPostProcessor-ом на шаге before-initialization, поэтому стоит до afterPropertiesSet. Прокси появляется последним, поэтому в коде инициализации его ещё нет.
Правильный порядок
- 1Вызов конструктора
- 2Внедрение зависимостей в поля и сеттеры
- 3Aware-колбэки (BeanNameAware, ApplicationContextAware)
- 4BeanPostProcessor.postProcessBeforeInitialization и @PostConstruct
- 5afterPropertiesSet() и initMethod
- 6BeanPostProcessor.postProcessAfterInitialization: создание прокси
Разбор
@PostConstruct обрабатывается BeanPostProcessor-ом на шаге before-initialization, поэтому стоит до afterPropertiesSet. Прокси появляется последним, поэтому в коде инициализации его ещё нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.