如何在没有调度程序servlet的情况下初始化SpringWebAplication?

时间:2014-12-22 17:11:22

标签: spring servlets

我在网络应用中使用Spring而不是SpringMVC,并且必须通过web.xml初始化Spring应用程序

我有标准的网络项目结构:

WEB-INF/applicationContext.xml
WEB-INF/web.xml

web.xml目前包含:

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>

  <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </listener>

但我的问题是,任何监听器都应绑定到servlet。就我而言,我不会使用dispatcherServlet。在这种情况下如何加载弹簧WebApplicationContext,所有的春豆等?我在web.xml中写什么?

1 个答案:

答案 0 :(得分:2)

ContextLoaderListener初始化WebApplicationContext并将其存储在ServletContext引用的名称下的WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE个属性中。

你可以这样检索它。

servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

ServletContext完成执行后,您可以访问ContextLoaderListener的任何地方。

As suggested by M.Deinum in the comments,这是一个非常流行的用例,Spring有自己的实用工具:WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext)

您不需要更改web.xml中的任何内容。