Spring MVC在一个多maven模块项目中

时间:2013-11-29 10:39:24

标签: java spring hibernate maven spring-mvc

我正在使用Spring,Spring MVC和Maven设计和实现Java Web应用程序。我的目标是创建三个模块:

  • 包含实体和DAO的数据模块
  • 包含业务逻辑和@Service类
  • 的服务模块
  • 包含jsp文件和@Controller类
  • 的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不会启动,也不会创建休眠会话。

非常感谢, 亚历

1 个答案:

答案 0 :(得分:2)

Spring有自己的resource loading机制,ApplicationContext的每个实现都有自己的默认资源位置。默认情况下,ClassPathXmlApplicationContext从类路径加载,而XmlWebApplicationContext从Web应用程序根加载。

您可以通过为其添加前缀来指定每个资源的加载位置。 classpath:始终从类路径加载,file:从文件系统等加载。

简而言之,只需将classpath:添加到要导入的资源名称,以强制始终从类路径加载此文件。

<import resource="classpath:serviceApplicationContext.xml" />