java - Maven 项目中的每个模块都应该有自己的 Spring 应用程序上下文吗?

标签 java spring maven jakarta-ee spring-mvc

我正在创建一个应用程序,其中我将项目分为不同的模块,例如(域、存储库、服务和 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/

相关文章:

java - Spring Mvc 测试 webapp @Autowired 注释不起作用

java - 如何在Maven项目中导入OpenCV?

java - 在Java中比较两个日期的最佳方法(日期标准)?

java - 如何找到正在运行的 Equinox 实例的 pid,是否有 pid 文件?

java - 传递参数在 Quartz 1.6 中不起作用

java - 如何在运行时基于没有 XML 的 Spring 属性注入(inject)不同的服务

java - 我可以从 lomboks @Data 注释中排除字段吗?

java - 如何在服务器上运行 Maven Java 应用程序

java - maven-archetype-quickstart 挂起并显示 "Searching for remote catalog: http://repo.maven.apache.org/maven2/archetype-catalog.xml"

java - 尝试使用不兼容的返回类型 - android studio