После завершения моего приложения я хочу закрыть весенний контекст.
В соответствующем коде есть ApplicationContext
ссылка, но мне не удалось найти close
метод.
85
Поверженный ваш ApplicationContext
к ConfigurableApplicationContext
которой определяет close()
метод:
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContext
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, как показано ниже:
Для получения дополнительной информации см .: Руководство Spring: 3.6.1.6 Изящное завершение работы контейнера Spring IoC в не веб-приложениях.
источник
Если вы инициализируете контекст, как показано ниже
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);
чистый контекст вроде этого
источник
Если 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();
источник