我正在创建一个应用程序,其中我将项目分为不同的模块,例如(域、存储库、服务和 Web)以及许多用于邮件发送、文本格式化等的通用 Maven 项目。我也在使用 Spring。
目前我只在 Web 项目中有 Spring 应用程序上下文文件。但是,由于我正在为文本格式等创建一般目的项目,这些项目封装了来自实际应用程序的库(例如 freemarker),我不喜欢我必须在 Web 项目的 Spring 应用程序上下文文件中指定库相关配置。
问题是,为每个模块创建一个单独的 Spring 应用程序上下文文件,然后将上下文文件导入到我使用它们的项目中是否正确。这是正确的方法吗,还是有更好的方法?
我感兴趣的是当我使用 XML 文件而不是 JavaConfig 时如何解决这个问题。
最佳答案
为所有模块创建applicationContext.xml
配置并将其放置在模块中,然后从web 模块导入所有模块的所有配置。
web.xml
<!-- Context Configuration locations for Spring XML files -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/applicationContext-resources.xml
classpath:/applicationContext-dao.xml
classpath:/applicationContext-service.xml
classpath*:/applicationContext.xml
/WEB-INF/applicationContext*.xml
/WEB-INF/cxf-servlet.xml
/WEB-INF/security.xml
</param-value>
</context-param>
在此示例中,所有 applicationContext.xml
都是从模块中导入的。
此示例代码是从 AppFuse 应用程序复制而来的,看看这个应用程序是如何配置的。要使用 AppFuse 构建示例多模块 Spring 应用程序,请使用:
mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-spring-archetype -DarchetypeVersion=3.0.0 -DgroupId=com.mycompany -DartifactId=myproject -DarchetypeRepository=http://oss.sonatype.org/content/repositories/appfuse
引用资料:
关于java - Maven 项目中的每个模块都应该有自己的 Spring 应用程序上下文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220812/