【问题标题】:Adding Spring Configuration File to classpath via Manifest file通过清单文件将 Spring 配置文件添加到类路径
【发布时间】:2010-09-30 20:46:30
【问题描述】:

我有一个 WAR 项目,我正在尝试将 spring 配置文件存储在 /WebContent/WEB-INF/Spring/ 文件夹中(根据我的雇主的要求),但是当我这样做时,我还没有找到一种方法能够在我的 junit 测试中引用这些文件。今天有人告诉我,我可以修改我的 MANIFEST.MF 文件,以便包含 spring 配置文件,但我无法成功地从清单文件中引用这些文件。

我的第一个问题是是否可以从我的 junits 中引用 /WebContent/WEB-INF/Spring/ 文件夹中的文件?如果可能,清单文件如何知道在哪里查找文件?链接是相对的吗?

我的WAR的文件夹结构如下(结构由我工作的公司定义):

战争计划 - 源\ - 网页内容\ - - 网络信息\ - - - 春天\ - - - - 应用配置.xml - - - - 安全.xml - - 元信息\ - - - 清单.MF

感谢您提供的任何指导。

杰里米

【问题讨论】:

  • 如何使用 Maven 自动运行测试?
  • 我们目前使用 JUnit 手动运行测试

标签: java spring manifest.mf


【解决方案1】:

如果您使用的是 Spring 2.5 或更高版本以及 Spring's TestContext framework,那么您可以简单地使用 @ContextConfiguration(locations = {path/to/file}) 注释测试类

如果您自己加载 ApplicationContext,则只需确保 /WebContent/WEB-INF/Spring/ 在类路径中并使用 classpath:contextname.xml 加载文件。

【讨论】:

    【解决方案2】:

    在任何情况下,无论 Spring 的版本如何,您都可以使用 FileSystemXmlApplicationContext 类加载您的应用程序上下文进行测试,并将字符串 "file:WebContent/WEB-INF/Spring/App-config.xml" 作为 'configLocation' 参数传递,这将加载您的应用程序来自 XML 配置的上下文。

    考虑到这一点,Matt 确实有一个好主意,如果您能够使用基于注解的测试,您应该使用 @ContextConfiguration 注解和 @RunWith(SpringJUnit4TestRunner.class) 注解让 Spring 的测试框架加载上下文自动为您服务,在这种情况下,您还可以在 @ContextConfiguration 注释中使用上面的字符串。您不需要在类路径中包含应用程序上下文,也不需要为了测试而将 /WebContent/WEB-INF/Spring/ 添加到类路径中。

    【讨论】:

      猜你喜欢
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      相关资源
      最近更新 更多