使用maven时放置spring配置文件的位置

时间:2012-12-13 12:21:21

标签: 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配置文件放到资源目录吗? 我不确定它们是否可以被视为资源文件。大多数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目录,但是,没有什么是完美的。

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

1 个答案:

答案 0 :(得分:11)

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

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