我在同一个应用程序中使用org.springframework.web.servlet.DispatcherServlet
和org.springframework.ws.transport.http.MessageDispatcherServlet
,但每个都在加载自己的应用程序上下文,我需要在单个应用程序上下文中加载所有bean。
该应用程序包含典型的图层web> app> dao等
我尝试过在spring-root-context.xml
中设置一个contextConfigLocation
。
但是没有帮助,这对我来说已经成为一个问题很长一段时间了,我将不胜感激任何帮助。
任何在线参考都会有很大的帮助。
答案 0 :(得分:12)
这里需要的是ContextLoaderListener
。这是一个ServletContextListener
,它创建一个在该webapp中的所有servlet之间共享的根WebApplicationContext
。
您的DispatcherServlet
和MessageDispatcherServlet
仍将创建自己的上下文,但每个上下文都将作为其父上下文,因此它们都能够使用在该根上下文中定义的bean,如DAO等一些bean必须保留在servlet自己的上下文中,例如控制器,视图解析器,SOAP端点等,但共享的公共bean可以放在root中。
有关如何配置此内容的示例,请参阅Spring docs。