【问题标题】:spring where to store xml config filesspring 在哪里存储 xml 配置文件
【发布时间】:2013-02-18 23:32:17
【问题描述】:

我正在开发一个 spring 项目,我刚刚在 junit 中加载 XML 配置文件时遇到了严重问题(但它们可以从 Web 控制器访问) - 无法加载 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 测试中轻松访问它们?有什么好的做法吗?

【问题讨论】:

标签: spring jakarta-ee configuration-files directory-structure


【解决方案1】:

将配置文件放在war包的WEB-INF/classes下,它们将被加载到类路径中。考虑将代码部署为爆炸式战争,以便轻松更改配置文件。

还可以考虑使用 maven war 项目进行打包。如果你这样做了,你可以把你的配置文件放在源代码下的 src/main/resources 下,它们会为你打包到 WEB-INF/classes 中。

【讨论】:

  • 将源 XML 文件放在 WEB-INF/classes 下似乎是一种肮脏的解决方法。 Maven 似乎是最好的解决方案。
  • 我见过的其他方法是在你的tomcat类路径中添加一个额外的位置并将你的配置文件放在那里(需要挖掘tomcat手册如何做到这一点)
【解决方案2】:

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

【讨论】:

  • 但我使用的是 Tomcat……我在类路径中看不到 META-INF。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2017-11-13
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
相关资源
最近更新 更多