【问题标题】:Spring project with multimodule带有多模块的 Spring 项目
【发布时间】:2014-03-12 12:36:58
【问题描述】:
我希望创建一个 Spring Web 应用程序,并使用 Maven 作为构建自动化工具。
我更喜欢使用多模块应用程序。模块的原因是:
我的应用程序和用户模块中有一个管理模块。编码
用户模块的更改不需要测试管理模块。
不同的开发团队在用户和管理模块中工作
在 POM 模块方面,我倾向于如下所示
project/pom.xml #pom with <modules> element
project/parent/pom.xml #Parent pom
project/moduleX/pom.xml #module 'X'
project/moduleY/pom.xml #module 'Y'
问题是,当我采用模块方法时,我需要在 Spring 方面遵循任何最佳实践吗?
【问题讨论】:
标签:
spring
maven
multi-module
【解决方案1】:
使用每个模块applicationContex
您可能需要每个模块的应用程序上下文:
...
<servlet>
<servlet-name>main-project</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/config/main-project-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>main-project</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext-moduleX.xml
/WEB-INF/config/applicationContext-moduleY.xml
</param-value>
</context-param>
...
然后,您需要一种方法将各种应用程序上下文放入同一目录,/WEB-INF/config/,例如通过 Maven Assembly Plugin 或通过 Maven War Plugin 覆盖。