Після завершення моєї заявки я хочу закрити весняний контекст.
Відповідний код має ApplicationContextпосилання, але я не міг знайти closeметод.
Після завершення моєї заявки я хочу закрити весняний контекст.
Відповідний код має ApplicationContextпосилання, але я не міг знайти closeметод.
Відповіді:
Повалений ваш ApplicationContextдо ConfigurableApplicationContextякої визначає close()метод:
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContextклас, так і ConfigurableApplicationContextінтерфейс, реалізований цим класом, можливо, краще використовувати останній у більшості випадків.
ConfigurableApplicationContextзараз поширюється Closable(не знаю, в якій версії була внесена ця зміна, але документи для 4.2.x показують це, а 3.0.x - ні), набагато коротша версія ((Closable)context).close();.
AutoCloseableреалізація, що означає, що тепер можна використовувати спробу з ресурсами, якщо ви зберігаєте свій контекст у змінній, де 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Об’єкт
ApplicationContextObject to ConfigurableApplicationContextobject.приклад:
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