Выбор ответа Middle Бины: скоупы и жизненный цикл обновлено

Порядок колбэков инициализации

Вопрос

В бине есть @PostConstruct init(), он реализует InitializingBean, и в @Bean(initMethod = "setup") указан метод. В каком порядке они вызовутся?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: init(), afterPropertiesSet(), setup(). Сначала аннотация @PostConstruct (её обрабатывает CommonAnnotationBeanPostProcessor в before-initialization), затем интерфейс InitializingBean.afterPropertiesSet(), затем пользовательский init-метод.

Варианты ответа

  1. init(), afterPropertiesSet(), setup()правильный ответ
  2. afterPropertiesSet(), init(), setup()
  3. setup(), init(), afterPropertiesSet()
  4. Порядок не определён и зависит от версии

Разбор

Сначала аннотация @PostConstruct (её обрабатывает CommonAnnotationBeanPostProcessor в before-initialization), затем интерфейс InitializingBean.afterPropertiesSet(), затем пользовательский init-метод. Для уничтожения порядок тот же по видам: @PreDestroy, DisposableBean.destroy(), destroyMethod.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.