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