我正在尝试解决我的配置文件问题。
我有一个Spring MVC应用程序,具有以下结构(我的当前结构)
src/main/java/ .......................(Java类) src/main/resources/ ..................(一些.properties文件) src/main/webapp/ .....................(Web内容,web.xml) src/main/webapp/spring/ ..............(其他Spring配置文件,app-confix.xml等) src/main/webapp/myApp-servlet.xml ....(servlet配置)
src/test/java ........................(Java测试类) src/test/resources ...................(一些测试.properties文件)
(这是相当标准的Maven项目目录结构)
那么,我的问题是:我应该把Spring配置文件放到资源目录中吗?我不确定它们是否可以视为资源文件。大多数Spring项目的配置在WEB-INF/目录中。但是在单元测试时会出现一个问题,因为当我需要加载servlet配置时,maven期望在/test/resources目录中找到配置文件。我知道,我可以将上下文xml文件复制到测试类中,然后一切都会没问题,但我觉得这不太好。
我在网上阅读了很多文章,但我仍然不确定什么是正确的方法。
所以我有三个选择:
1. 保持当前结构不变
2. 将所有Spring配置文件移动到 /main/(java|test)/resources 中。在这里我看到一个问题,所有的配置文件都会在 classes 目录中,我不确定这是否正确。
3. 只将 Servlet 配置文件移动到 /main/(java|test)/resources 中,其他 Spring 配置文件仍然保留在 /WEB-INF/ 目录中。
那么,你推荐什么?当使用 Maven 和 JUnit 时,配置文件放置的最佳实践是什么?
更新: 在选项 2. 和 3. 中修正了目录命名。
更新: 我发现了一篇非常有趣的文章[1],介绍了 Spring 的最佳实践。它看起来很有前途,并确认了 Ralph 的解决方案。我仍然不满意 META-INF 目录存在于 WEB-INF/classes
中,但是...没有完美的东西。
src\test\resources\...
- RalphWEB-INF/classes
目录中。因此,在我的情况下,我在webApp/WEB-INF/classes/META-INF/spring...
中拥有所有配置文件。我不确定这是否是正确的行为,我认为所有位于java/main/resources/META-INF
中的文件都应该位于webApp/META-INF
目录而不是webApp/WEB-INF/classes
目录中。 - Peter