Sobes.tech
Back to questions
Junior — Middle
64

Как изменение области жизни бинов в Spring влияет на вызов методов, обозначенных аннотацией @PreDestroy?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

В Spring область жизни (scope) бина определяет, как долго существует экземпляр бина и когда он уничтожается. Аннотация @PreDestroy помечает метод, который вызывается перед уничтожением бина.

  • Для singleton-скоупа (по умолчанию) бин создаётся один раз на контейнер, и метод с @PreDestroy вызывается при завершении работы контекста Spring (например, при остановке приложения).
  • Для prototype-скоупа Spring создаёт новый экземпляр бина при каждом запросе, но не управляет его жизненным циклом полностью, поэтому метод с @PreDestroy не вызывается автоматически — ответственность за вызов лежит на разработчике.
  • Для request, session и других скоупов, связанных с веб-запросами, метод @PreDestroy вызывается при завершении соответствующего скоупа (например, при завершении HTTP-запроса или сессии).

Таким образом, изменение области жизни бина влияет на момент и факт вызова методов с @PreDestroy: для singleton и скоупов с управляемым жизненным циклом метод вызывается автоматически, для prototype — нет.