Выбор ответа Middle Бины: скоупы и жизненный цикл обновлено
@PreDestroy у prototype
Вопрос
Вызовется ли @PreDestroy у prototype-бина при закрытии контекста?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет: Spring отдаёт prototype и не отслеживает. Контейнер не хранит ссылки на выданные prototype-экземпляры, поэтому не может их уничтожить: освобождение ресурсов ложится на вызывающий код.
Варианты ответа
- Да, как и у всех остальных бинов контекста
- Нет: Spring отдаёт prototype и не отслеживаетправильный ответ
- Да, но только если бин реализует DisposableBean
- Да, сразу после выхода из метода, где его использовали
Разбор
Контейнер не хранит ссылки на выданные prototype-экземпляры, поэтому не может их уничтожить: освобождение ресурсов ложится на вызывающий код. DisposableBean здесь тоже не поможет. Никакого «уничтожения после метода» в Spring нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.