spring - 使用maven时spring配置文件放在哪里

标签 spring unit-testing maven junit

我正在尝试解决我的配置文件问题。

我有具有此结构的 Spring MVC 应用程序(我当前的结构)

src/main/java/ ....................... (java classes)
src/main/resources/ .................. (some .properties files )
src/main/webapp/ ..................... (web content, web.xml )
src/main/webapp/spring/ .............. (other spring config files, app-confix.xml, etc.)
src/main/webapp/myApp-servlet.xml .... (servlet config)


src/test/java ........................ (java test classes)
src/test/resources ................... (some test .properties files) 

(这是相当标准的 Maven 项目目录结构)

所以,我的问题是:我是否应该将 spring 配置文件放入 resources 目录? 我不确定它们是否可以被视为资源文件。大多数 Spring 项目的配置都在 WEB-INF/目录中。但是单元测试有一个问题,因为当我需要加载 servlet 配置时,maven 需要/test/resources 目录中的配置文件。我知道,我可以将上下文 xml 文件复制到测试的类中,一切都会好起来的,但这对我来说看起来不太好。

我在互联网上阅读了很多文章,但我仍然不确定什么是正确的方法。

所以我有树选项:

1. 保持当前结构

2. 将所有 spring 配置移动到/main/(java|test)/resources 在这里我可以看到一件坏事。所有配置文件都将位于类目录中,我不确定这是否正确。

3. 仅将 servlet 配置移动到/main/(java|test)/resources 并将其他 spring 配置文件保留在/WEB-INF/目录中。

那么,你有什么建议呢? 将 Spring 与 Maven 和 JUnit 结合使用时,配置文件放置的最佳实践是什么?

更新:修复了选项 2 和 3 中的目录命名。

更新:我发现阅读有关 Spring 最佳实践的 [1] 非常有趣。它看起来非常有希望并证实了拉尔夫的解决方案。我仍然对 WEB-INF/classes 中 META-INF 目录的存在不满意,但是,好吧......没有什么是完美的。

[1] http://gordondickens.com/wordpress/2012/07/03/enterprise-spring-best-practices-part-1-project-config/

最佳答案

常见模式(例如 Spring Roo 应用程序使用的模式)是将配置文件放在 src\main\resources\META-INF\spring\

然后,您可以在测试和应用程序中通过相同的表达式 classpath:META-INF\spring\application-context.xml 加载它们。

关于spring - 使用maven时spring配置文件放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13859755/

相关文章:

java - 无法覆盖或禁用 spring boot 实例化的 Filter,导致过滤器链中出现重复条目

java - 具有 2 个工厂方法的抽象工厂模式

eclipse - 如何在eclipse中全局添加jboss存储库到maven?

java - 尝试加载类时出现 NoClassDefFoundError

maven - 由于缺少 e4 RCP 应用程序的 bundle "org.eclipse.equinox.p2.reconciler.dropins",Tycho 构建失败

java - 如何在 Spring Boot 中创建日志文件?

java - 无法加载在 Docker 中运行的 Spring Boot 应用程序

ruby-on-rails - 你如何测试不是模型或 Controller 的代码

Java Connect 数据源永无止境

java - 模拟抛出空指针异常。新来的模拟