2013-02-18 68 views
0

我正在开发一个spring项目,我刚刚遇到了在junit中加载XML配置文件的严重问题(但它们可以从Web控制器访问) - 无法加载XML文件。春天在哪里存储xml配置文件

我把我的类路径(在JUnit测试),发现外,其余中,有2个目录包括:

/var/www/Java/lyricsBase/build/web/WEB-INF/classes/ 
/var/www/Java/lyricsBase/build/test/classes/ 

只有一个文件,我想在我的测试,包括:

  • /WEB-INF/lyricsBaseApp-servlet.xml

而且进口下面3个文件:

  • /WEB-INF/hibernate.xml
  • /WEB-INF/dataSource.xml
  • /WEB-INF/beans.xml

我可以清楚地看到,部署我的Tomcat项目将confg文件复制到/var/www/Java/lyricsBase/build/web/WEB-INF/ABC.xml,但该目录不在类路径中,而是包含/var/www/Java/lyricsBase/build/web/WEB-INF/classes。我读过WEB-INF不应该在类路径中(这只是一个Java EE原则)。好的 - 我应该在哪里将我的配置文件轻松地从Web控制器和junit测试中访问它们?任何良好做法?

+0

当你使用Maven时,比看看这个问题:http://stackoverflow.com/questions/13859755/where-to-put-spring-configuration-files-when-using-maven – Ralph 2013-02-19 08:05:39

回答

2

将配置文件放在war-package的WEB-INF/classes下,它们将被加载到类路径中。考虑将你的代码部署为分解战争,这样配置文件可以很容易地改变。

另外考虑使用maven战争项目为您的包装。如果你这样做,你可以将你的配置文件放在源代码下的src/main/resources下,然后将它们打包到WEB-INF/classes中。

+0

在WEB-INF/classes下放置源XML文件似乎是一个肮脏的解决方法。 Maven似乎是当时最好的解决方案。 – ducin 2013-02-19 09:21:57

+0

我见过的其他方法是给你的tomcat classpath添加一个额外的位置,并将你的配置文件放在那里(需要挖掘tomcat手册如何做到这一点) – gerrytan 2013-02-20 04:34:22

1

我有同样的问题,从那时起就开始把它们放在META-INF资源下。这是在Tomcat中不运行的Spring模板项目放置它们并似乎解决我的问题的地方。

+0

但我使用Tomcat ...并且我无法在我的类路径中看到META-INF。 – ducin 2013-02-18 23:45:43