Как можно (можно ли) при завершении программы вызывать destroy-method без вызова appContext.close()?
void main(){
appContext = new ClassPathXmlApplicationContext("spring.xml");
... blablabla...
// завершаю программу без вызова appContext.close()
}
Можно зарегистрировать Shutdown Hook.
void main(){
appContext = new ClassPathXmlApplicationContext("spring.xml");
appContext.registerShutdownHook();
appContext.refresh();
... blablabla...
// завершаю программу без вызова appContext.close()
}
В этом случае Spring зарегистрирует перехватчик завершения приложения, в котором будет вызвано закрытие контекста если оно не было вызвано ранее. Удобно при наличии нескольких точек выхода из приложения.
destroy-method будет выполнятся для singleton бинов только при закрытии контекста, для prototype вообще не будет выполноятся так как контекст не будет следить за его жизненным циклом
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники