Как закрыть spring ApplicationContext?


после завершения моего приложения я хочу закрыть весенний контекст.
Соответствующий код имеет ApplicationContext ссылки, но я не мог найти close метод.

5 68

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 объект

  1. тип приведения ApplicationContext объект ConfigurableApplicationContext "объект".
  2. затем вызовите близкий объект на этом.

пример:

 ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml");

((ConfigurableApplicationContext)context ).close();