我正在尝试解决配置文件问题。
我有这种结构的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配置文件放到资源目录吗? 我不确定它们是否可以被视为资源文件。大多数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 /目录中。
那么,你推荐什么? 将Spring与Maven和JUnit一起使用时,配置文件放置的最佳实践是什么?
更新:选项2和3中的固定目录命名。
更新:我发现了有关Spring最佳实践的非常有趣的阅读[1]。它看起来非常有前景,并证实了拉尔夫的解决方案。我仍然不满意WEB-INF/classes
中存在META-INF目录,但是,没有什么是完美的。
答案 0 :(得分:11)
常见模式(例如Spring Roo应用程序使用)是将配置文件放在src\main\resources\META-INF\spring\
然后,您可以在测试和应用程序中通过相同的表达式classpath:META-INF\spring\application-context.xml
加载它们。