我正在使用Spring,Spring MVC和Maven设计和实现Java Web应用程序。我的目标是创建三个模块:
服务模块和数据模块之间的通信工作很好。服务模块依赖于数据模块,它在serviceApplicatioContext.xml中包含<import resource="dataApplicationContext.xml"/>
的数据模块。我已经使用静态主类和一些集成测试对它进行了测试。
我遇到的问题是让Web模块依赖于服务模块。如何让我的mvc-dispatcher-servlet.xml导入我的serviceApplicatioContext.xml?
我到目前为止尝试过的解决方案:
1)如果我只使用<import resource="/serviceApplicationContext.xml"/>
,那么Spring MVC将寻找/WEB-INF/serviceApplicationContext.xml,当然,它不存在。
2)如果我用<context:component-scan base-package="my.project.controller" />
替换<context:component-scan base-package="my.project" />
,那么Spring不会启动,也不会创建休眠会话。
非常感谢, 亚历
答案 0 :(得分:2)
Spring有自己的resource loading机制,ApplicationContext
的每个实现都有自己的默认资源位置。默认情况下,ClassPathXmlApplicationContext
从类路径加载,而XmlWebApplicationContext
从Web应用程序根加载。
您可以通过为其添加前缀来指定每个资源的加载位置。 classpath:
始终从类路径加载,file:
从文件系统等加载。
简而言之,只需将classpath:
添加到要导入的资源名称,以强制始终从类路径加载此文件。
<import resource="classpath:serviceApplicationContext.xml" />