什么是关闭Spring Applicationcontext的最佳方法?

时间:2016-04-24 11:21:35

标签: spring

关闭Spring ApplicationContext有两种方法:

解决方案1:

         ApplicationContext context = new ClassPathXmlApplicationContext(
                "spring/application-context.xml");
         // Application core ...
         ((AbstractApplicationContext) context).close();

解决方案2:

         ApplicationContext context = new ClassPathXmlApplicationContext(
                    "spring/application-context.xml");
        ((AbstractApplicationContext) context).registerShutdownHook();
        // Application core ...

这两种解决方案之间的区别在于哪种解决方案与性能最佳?

1 个答案:

答案 0 :(得分:1)

解决方案1关闭应用程序上下文

解决方案2注册一个回调,因此如果JVM关闭,spring将从javadoc关闭:

  

向JVM运行时注册一个关闭挂钩,在JVM关闭时关闭此上下文,除非此时它已经关闭。

因此两者都是两个不同的东西,通常在创建应用程序上下文后直接调用registerShutdownHook()。因此,当您的用户终止JVM时,将调用spring并自行关闭。

你应该在应用程序结束时调用close(),以允许spring销毁它的bean。