[英]AWS Lambda Java how to read properties file
我尝试将属性从文件加载到Properties类中。 我希望该解决方案能起作用: 如何从AWS Lambda Java中的类路径加载属性文件
我有一个很少使用静态方法的类,我想将其用作Config持有人。 里面有这条线
final InputStream inputStream =
Config.class.getClass().getResourceAsStream("/application-main.properties");
并且它总是返回null。 我下载了Lambda使用的zip软件包,该文件位于root用户内部。 仍然不起作用。
有人有类似的问题吗?
编辑:配置文件在这里:
project
└───src
│ └───main
│ └───resources
│ application-main.properties
编辑:我的“临时”解决方法如下所示:
// LOAD PROPS FROM CLASSPATH...
try (InputStream is = Config.class.getResourceAsStream(fileName)) {
PROPS.load(is);
} catch (IOException|NullPointerException exc) {
// ...OR FROM FILESYSTEM
File file = new File(fileName);
try (InputStream is = new FileInputStream(file)) {
PROPS.load(is);
} catch (IOException exc2) {
throw new RuntimeException("Could not read properties file.");
}
}
在测试期间,它从类路径读取,在AWS Lambda运行时中部署后,它使用文件系统。 要标识我使用的env变量文件:
fileName = System.getenv("LAMBDA_TASK_ROOT") + "/application-main.properties";
但是我宁愿只使用classpath而不解决此问题。
当您要加载属性文件时,可以使用ResourceBundle
加载属性。
String version = ResourceBundle.getBundle("application-main").getString("version");
它与作为InputStream
加载文件不同,但这对我InputStream
。
我有一个简单的Hello-World Lambda,它从github上的属性文件读取当前版本。
假设src / main / resources / config.properties
File file = new File(classLoader.getResource("resources/config.properties").getFile());
FileInputStream fileInput = new FileInputStream(file);
prop.load(fileInput);
假设您具有以下文件夹结构:
project └───src │ └───main │ └───resources │ config.properties
还有您的Lambda处理程序:
ClassLoader loader = Config.class.getClassLoader(); InputStream input = loader.getResourceAsStream("config.properties");
可能行得通...
如果src / main / resource包中有一个.properties文件,请尝试以下操作:
protected static Properties readPropertiesFile() {
ClassLoader classLoader = Utils.class.getClassLoader();
try {
InputStream is = classLoader.getResourceAsStream("PropertiesFile.properties");
Properties prop = new Properties();
prop.load(is);
return prop;
} catch (Exception e) {
return null;
}
}
您可以通过以下方式调用它:
Properties _dbProperties = Utils.readPropertiesFile();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.