После завершения моего приложения я хочу закрыть весенний контекст.
В соответствующем коде есть ApplicationContext
ссылка, но мне не удалось найти close
метод.
После завершения моего приложения я хочу закрыть весенний контекст.
В соответствующем коде есть ApplicationContext
ссылка, но мне не удалось найти close
метод.
Ответы:
Поверженный ваш ApplicationContext
к ConfigurableApplicationContext
которой определяет close()
метод:
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContext
это класс и ConfigurableApplicationContext
интерфейс, реализованный этим классом, в большинстве случаев, вероятно, лучше использовать последний.
ConfigurableApplicationContext
теперь расширяется Closable
(не знаю, в какой версии было внесено это изменение, но в документации для 4.2.x это показано, а для 3.0.x нет), это гораздо более короткая версия ((Closable)context).close();
.
AutoCloseable
реализация, которая означает, что теперь можно использовать try-with-resources, если вы сохраняете свой контекст в переменной, в AutoCloseable
которой виден интерфейс, то естьtry (ConfigurableApplicationContext context = new ....) { /* your code goes here */ } // context is closed when you leave the try block
Вам необходимо зарегистрировать ловушку завершения работы с 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();
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("SpringCnf.xml");
Resturant rstro1=(Resturant)context.getBean("resturantBean");
rstro1.setWelcome("hello user");
rstro1.welcomeNote();
((ClassPathXmlApplicationContext) context).close();
AbstractApplicationContext