Bor*_*hov 2 java spring java-ee pom.xml maven
我有一个Web应用程序,其中包含我的一个应用程序服务的配置xml文件,该文件作为spring bean公开.此外,我在同一个工作区中有一个独立的Java应用程序(它从其pom.xml引用我的Web应用程序项目),它使用Spring TestContext框架运行测试,其中一个测试检查该XML文件的配置.
但是我从独立应用程序访问此xml文件时遇到问题:
在设置测试之前,在我之前的配置中,该文件是通过ServletContext访问的,位于WEB-INF /文件夹中.然而,使其从测试项目,我必须将它移动到accessable 源/文件夹,并用getClassLoader()加载它.的getResourceAsStream()方法,而不是ServletContext中的.但它会使编辑文件变得很麻烦,因为每次都需要重新部署应用程序.
是否可以将文件保存在WEB-INF /文件夹中,但在测试运行期间从引用项目中加载它?
PS目前它是一个带有Tomcat服务器的STS项目.
绝对将文件保存在WEB-INF /文件夹下,如果它应该存在的位置.
对于从命令行执行的测试类.您可以对您知道位于类路径根目录中的文件(例如application.properties文件)使用getClassLoader().getResource().从那里你知道项目的结构以及在哪里找到WEB-INF /相对于属性文件.由于它返回一个URL,您可以使用它来确定您正在寻找的XML文件的路径.
URL url = this.getClass().getClassLoader().getResource("application.properties");
System.out.println(url.getPath());
File file = new File(url.getFile());
System.out.println(file);
// now use the Files' path to obtain references to your WEB-INF folder
Run Code Online (Sandbox Code Playgroud)
希望你觉得这很有用.我不得不对你的测试类如何运行等做出假设.
看一下File Class,它是可能对你有用的getPath(),getAbsolutePath()和getParent()方法.