所以我正在尝试为我的项目添加一些功能,以允许我的部署工件中的用户定义属性 - 一个简单的键:value .properties文件。我将service.properties文件放在
中war/WEB-INF/my-service.properties
在我的ServiceImpl.java构造函数中,我有以下内容:
String propertiesFileName = "my-service.properties";
URL propertyURL = ClassLoader.getSystemResource(propertiesFileName);
URL propertyURL2 = this.getClass().getClassLoader().getResource(propertiesFileName);
URL propertyURL3 = this.getClass().getClassLoader().getResource( "WEB-INF/" + propertiesFileName);
URL propertyURL6 = this.getClass().getClassLoader().getResource(
"E:/Projects/eclipse-workspace/projectName/war/WEB-INF/" + propertiesFileName);
属性URL的所有实例均为空。我知道我错过了一些绝对明显的东西,但我需要第二双眼睛。问候。
编辑:
啊,似乎我很困惑,因为默认的GAE项目在/ war中创建了logging.properties文件。来自Google App Engine documentation:
App Engine Java SDK在appengine-java-sdk / config / user /目录中包含模板logging.properties文件。要使用它,请将文件复制到WEB-INF / classes目录(或WAR中的其他位置),然后将系统属性java.util.logging.config.file复制到“WEB-INF / classes / logging.properties”(或无论您选择哪条路径,相对于应用程序根目录。您可以在appengine-web.xml文件中设置系统属性,如下所示: 的
答案 0 :(得分:10)
尝试将service.properties放在WEB-INF / classes中。然后只需使用以下内容即可访问:
this.getClass().getClassLoader().getResourceAsStream("/filename.properties");
答案 1 :(得分:1)
正如Mike在对jsight的回答中提到的{{3}},如果我使用
,它对我有用this.getClass().getClassLoader().getResourceAsStream("filename.properties");
将文件放入WEB-INF / classes后(删除第一个斜杠)。
答案 2 :(得分:0)
我认为你需要的是这样的:
String filePath = servletContext.getRealPath(“/ WEB-INF / views /”)+“/”+ mav.getViewName()+“。vm”; FileInputStream in = new FileInputStream(filePath);
我从spring获得了servletContext:@Autowire ServletContext。