Как можно (можно ли) при завершении программы вызывать 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 вообще не будет выполноятся так как контекст не будет следить за его жизненным циклом
Сборка персонального компьютера от Artline: умный выбор для современных пользователей