Как закрыть spring ApplicationContext?
после завершения моего приложения я хочу закрыть весенний контекст.
Соответствующий код имеет ApplicationContext ссылки, но я не мог найти close метод.
5 ответов:
потупив свой
ApplicationContextдоConfigurableApplicationContextопределяетclose()способ:((ConfigurableApplicationContext)appCtx).close();
вам нужно зарегистрировать крюк выключения с JVM, как показано ниже:
((AbstractApplicationContext)appCtx).registerShutdownHook();дополнительная информация: Spring руководство: 3.6.1.6 выключение контейнера Spring IoC изящно в не-веб-приложениях
Если вы инициализируете контекст, как показано ниже
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);чистый контекст, как эти
((ClassPathXmlApplicationContext) context).close();
Если Java SE 7 и позже, не закрывайте, используйте try-with-resources, который гарантирует, что каждый ресурс будет закрыт в конце инструкции.
try(final AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"classpath*:META-INF/spring/*.xml" })) { //write your code }
шаги, чтобы закрыть
ApplicationContextобъект
- тип приведения
ApplicationContextобъектConfigurableApplicationContext"объект".- затем вызовите близкий объект на этом.
пример:
ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml"); ((ConfigurableApplicationContext)context ).close();