关闭ApplicationContext

时间:2017-01-15 13:34:25

标签: spring

我正在使用Spring 4.3。我正在使用ConfigurableApplicationContext并在其上调用close()。正如预期的那样,用@PreDestroy注释的方法被称为。

但我已经看到,即使我不调用close,也会调用@PreDestroy方法。如果没有调用close(),我的印象是存在内存泄漏的可能性。我错了吗?

另外,如果我正在使用Web应用程序,关闭applicationcontext的正确方法是什么,regsiterShutdownHook?

1 个答案:

答案 0 :(得分:1)

你可以注册shutdown hook:

ConfigurableApplicationContext context = SpringApplication.run(Test.class, args);
context.registerShutdownHook();

或添加一个侦听器来执行某些操作:

ConfigurableApplicationContext context = SpringApplication.run(Test.class, args);

    context.addApplicationListener(new ApplicationListener<ContextClosedEvent>() {

        @Override
        public void onApplicationEvent(ContextClosedEvent event) {
            // some logic
        }
    });