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

@PreDestroy у prototype

Вопрос

Вызовется ли @PreDestroy у prototype-бина при закрытии контекста?

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

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

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

Коротко

Правильный ответ: Нет: Spring отдаёт prototype и не отслеживает. Контейнер не хранит ссылки на выданные prototype-экземпляры, поэтому не может их уничтожить: освобождение ресурсов ложится на вызывающий код.

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

  1. Да, как и у всех остальных бинов контекста
  2. Нет: Spring отдаёт prototype и не отслеживаетправильный ответ
  3. Да, но только если бин реализует DisposableBean
  4. Да, сразу после выхода из метода, где его использовали

Разбор

Контейнер не хранит ссылки на выданные prototype-экземпляры, поэтому не может их уничтожить: освобождение ресурсов ложится на вызывающий код. DisposableBean здесь тоже не поможет. Никакого «уничтожения после метода» в Spring нет.

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

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