Sobes.tech
Назад к вопросам
Junior — Middle
78

Чем отличается метод destroy() при удалении экземпляров бинов типа Singleton и Prototype?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В контексте Spring Framework (Java) метод destroy() отвечает за освобождение ресурсов при уничтожении бина.

  • Для Singleton бина метод destroy() вызывается контейнером Spring автоматически при завершении работы контекста, так как Singleton бин существует в течение всего жизненного цикла приложения.

  • Для Prototype бина Spring не управляет полным жизненным циклом, поэтому метод destroy() не вызывается автоматически. Ответственность за вызов методов очистки лежит на разработчике, который создал экземпляр.

Итого:

  • Singleton: destroy() вызывается автоматически контейнером.
  • Prototype: destroy() нужно вызывать вручную, если требуется очистка.

Это связано с тем, что Prototype бины создаются и управляются вне контейнера после инициализации, и контейнер не отслеживает их дальнейшую судьбу.