Spring Web应用程序:如果初始化失败则关闭

时间:2016-07-24 20:38:24

标签: java spring servlets java-ee

我有一个Spring Web应用程序。当应用程序上下文启动时,我使用ApplicationListener<ContextRefreshedEvent>来执行一些应用程序初始化,特别是我从Web服务加载数据。如果无法访问此Web服务,那么我的应用程序无法执行任何有用的操作,并且保持其运行没有意义。有没有办法以编程方式关闭应用程序上下文?

我尝试过以下操作:

if (contextRefreshedEvent instanceof ConfigurableApplicationContext)
{
    ConfigurableApplicationContext configurableApplicationContext
            = (ConfigurableApplicationContext) contextRefreshedEvent;
    configurableApplicationContext.close ();
}

然而,优雅地关闭会产生以下异常:

java.lang.IllegalStateException:BeanFactory未初始化或已经关闭 - 调用&#39;刷新&#39;在通过ApplicationContext访问bean之前

那么在这种情况下关闭应用程序的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

抛出ApplicationContextException。它适用于Spring 4.2.7.RELEASE