我在网络应用中使用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中写什么?
答案 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中的任何内容。