通过Manifest文件将Spring配置文件添加到类路径

时间:2010-09-30 20:46:31

标签: java spring manifest.mf

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

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

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

WARProject
 - src\
 - WebContent\
 - - WEB-INF\
 - - - Spring\
 - - - - App-config.xml
 - - - - Security.xml
 - - META-INF\
 - - - MANIFEST.MF

我感谢您提供的任何指导。

杰里米

2 个答案:

答案 0 :(得分:1)

如果您使用的是Spring 2.5或更高版本以及Spring's TestContext framework,则可以使用@ContextConfiguration(locations = {path/to/file})

简单地为测试类添加注释

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

答案 1 :(得分:1)

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

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