如何防止在ServletContextListener中的异常上加载弹簧上下文?

Posted

技术标签:

【中文标题】如何防止在ServletContextListener中的异常上加载弹簧上下文?【英文标题】:How to prevent spring context loading on exception in ServletContextListener? 【发布时间】:2017-03-23 05:34:37 【问题描述】:

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

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

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

这是一个非常相似的问题:Stop deployment when Exception occurs in ServletContextListener

【问题讨论】:

【参考方案1】:

这是我为解决这个问题所做的:

在我执行一些检查的侦听器中,如果发生错误,我将属性设置为 servlet 上下文

@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);

【讨论】:

以上是关于如何防止在ServletContextListener中的异常上加载弹簧上下文?的主要内容,如果未能解决你的问题,请参考以下文章

在winform当中提交数据,如何防止重复提交?

java_day29_Servlet三大组件之监听器listener

SpringMVC如何有效的防止XSS注入?

如何防止VBS的错误提示

PostgreSQL如何防止表太大?

如何防止内存编辑以防止挂钩