Після завершення моєї заявки я хочу закрити весняний контекст.
Відповідний код має 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
Об’єкт
ApplicationContext
Object to ConfigurableApplicationContext
object.приклад:
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