Выбор ответа Middle Бины: скоупы и жизненный цикл обновлено
Порядок колбэков инициализации
Вопрос
В бине есть @PostConstruct init(), он реализует InitializingBean, и в @Bean(initMethod = "setup") указан метод. В каком порядке они вызовутся?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: init(), afterPropertiesSet(), setup(). Сначала аннотация @PostConstruct (её обрабатывает CommonAnnotationBeanPostProcessor в before-initialization), затем интерфейс InitializingBean.afterPropertiesSet(), затем пользовательский init-метод.
Варианты ответа
init(),afterPropertiesSet(),setup()правильный ответafterPropertiesSet(),init(),setup()setup(),init(),afterPropertiesSet()- Порядок не определён и зависит от версии
Разбор
Сначала аннотация @PostConstruct (её обрабатывает CommonAnnotationBeanPostProcessor в before-initialization), затем интерфейс InitializingBean.afterPropertiesSet(), затем пользовательский init-метод. Для уничтожения порядок тот же по видам: @PreDestroy, DisposableBean.destroy(), destroyMethod.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.