Back to questions
Aston
Junior — Middle
64
Как изменение области жизни бинов в Spring влияет на вызов методов, обозначенных аннотацией @PreDestroy?
Companies where asked
Answer from AI
sobes.tech AI
В Spring область жизни (scope) бина определяет, как долго существует экземпляр бина и когда он уничтожается. Аннотация @PreDestroy помечает метод, который вызывается перед уничтожением бина.
- Для singleton-скоупа (по умолчанию) бин создаётся один раз на контейнер, и метод с @PreDestroy вызывается при завершении работы контекста Spring (например, при остановке приложения).
- Для prototype-скоупа Spring создаёт новый экземпляр бина при каждом запросе, но не управляет его жизненным циклом полностью, поэтому метод с @PreDestroy не вызывается автоматически — ответственность за вызов лежит на разработчике.
- Для request, session и других скоупов, связанных с веб-запросами, метод @PreDestroy вызывается при завершении соответствующего скоупа (например, при завершении HTTP-запроса или сессии).
Таким образом, изменение области жизни бина влияет на момент и факт вызова методов с @PreDestroy: для singleton и скоупов с управляемым жизненным циклом метод вызывается автоматически, для prototype — нет.