为Web应用程序使用单个spring应用程序上下文

时间:2010-03-22 11:58:23

标签: java spring spring-mvc

我在同一个应用程序中使用org.springframework.web.servlet.DispatcherServletorg.springframework.ws.transport.http.MessageDispatcherServlet,但每个都在加载自己的应用程序上下文,我需要在单个应用程序上下文中加载所有bean。

该应用程序包含典型的图层web> app> dao等

我尝试过在spring-root-context.xml中设置一个contextConfigLocation

但是没有帮助,这对我来说已经成为一个问题很长一段时间了,我将不胜感激任何帮助。

任何在线参考都会有很大的帮助。

1 个答案:

答案 0 :(得分:12)

这里需要的是ContextLoaderListener。这是一个ServletContextListener,它创建一个在该webapp中的所有servlet之间共享的根WebApplicationContext

您的DispatcherServletMessageDispatcherServlet仍将创建自己的上下文,但每个上下文都将作为其父上下文,因此它们都能够使用在该根上下文中定义的bean,如DAO等一些bean必须保留在servlet自己的上下文中,例如控制器,视图解析器,SOAP端点等,但共享的公共bean可以放在root中。

有关如何配置此内容的示例,请参阅Spring docs