Sobes.tech
Junior — Middle
85

Spring-те @PreDestroy аннотациясымен әдіс Bean үшін шақырылмауы мүмкін жағдайлар қандай?

Сұралған компаниялар
Stroki

AI-дан жауап

sobes.tech AI

Метод с аннотацией @PreDestroy в Spring может не быть вызван в следующих случаях:

  • Bean не был корректно создан или инициализирован, например, из-за исключения при создании.
  • Контекст Spring не был корректно закрыт (например, приложение аварийно завершилось), и метод уничтожения не был вызван.
  • Bean не управляется Spring (создан вручную вне контейнера), тогда lifecycle-методы не вызываются.
  • Bean имеет scope, при котором метод @PreDestroy не вызывается, например, prototype scope — для прототипных бинов Spring не вызывает @PreDestroy автоматически.

Таким образом, чтобы гарантировать вызов @PreDestroy, Bean должен быть singleton или scoped, управляемым Spring, и контекст должен корректно завершать работу.