【问题标题】:Spring MVC in a multi maven module project多 Maven 模块项目中的 Spring MVC
【发布时间】:2013-12-15 12:47:45
【问题描述】:

我正在使用 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 不会启动,也不会创建休眠会话。

非常感谢, 亚历克斯

【问题讨论】:

  • 假设配置在类路径中(即在你的 jar 文件中)使用 classpath: 前缀。 IE。 <import resource="classpath:serviceApplicationContext.xml" />。我还建议您在数据上下文文件的服务上下文中执行此操作。有关在应用程序上下文中加载资源的更多信息,请参阅docs.spring.io/spring/docs/current/spring-framework-reference/…
  • 感谢 Deinum。我正在取得进展。我需要为 jdbc.properties 找出正确的位置,然后祈祷,我应该没问题。再次感谢
  • Deinum,如果您将您的评论写为答案,我很乐意将其标记为正确答案

标签: java spring hibernate maven spring-mvc


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-09-13
    • 2015-10-10
    • 2018-12-29
    • 2014-06-02
    • 2016-03-27
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多