如何防止ServletContextListener中的异常加载Spring上下文?

时间:2016-11-09 11:56:19

标签: spring spring-mvc servlet-listeners spring-ioc

我使用ContextLoaderListener来提升弹簧上下文。 在此之前的 web.xml 中,我有自定义侦听器,其中包含一些检查。如果这些检查失败,我不希望启动Spring上下文。

如果我在另一个侦听器中有异常,我如何阻止Spring上下文加载?

我会在ServletContext中添加一些属性,但我不知道它如何影响spring ctx的加载。

以下是非常相似的问题:Stop deployment when Exception occurs in ServletContextListener

1 个答案:

答案 0 :(得分:0)

以下是我要解决的问题:

在我执行某些检查的监听器中,如果发生错误,我将属性设置为servlet context

@Override
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("checkFailed", true);
}

然后我延长了Spring的ContextLoaderListener并覆盖contextInitialized这样:

@Override
public void contextInitialized(ServletContextEvent event) {
    if (event.getServletContext().getAttribute("checkFailed") != null) {
        return;
    }
    super.contextInitialized(event);
}