我有一个简单的方法,可以在修改文件后重新加载配置。
private Properties loadCustomProperties(File config) throws IOException {
Properties properties = new Properties();
try (FileInputStream inStream = new FileInputStream(config)) {
properties.load(inStream);
}
return properties;
}
现在,如果我从IDE(Intellij)运行此代码,一切正常,但是当使用Spring bootstrap jar运行时,它将加载文件的第二个版本。因此,基本上,如果我的初始值prop = 1,然后将其更改为prop = 2,则仍然加载了prop = 1。如果将其更改为prop = 3,则最终会加载了prop = 2,依此类推。
系统为Ubuntu 18.04。
属性如下:
cache.size=1000
预期的输出是获取文件的最新版本。
答案 0 :(得分:0)
我建议您构建一种实用程序方法来读取单个属性,以便可以轻松地按1逐个加载所需的所有属性,例如(在我的示例中,配置文件名为 config.properties ):
public static String getPropertyValue(String property) throws IOException {
Properties prop = new Properties();
String propFileName = "config.properties";
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(propFileName);
if (inputStream != null) {
prop.load(inputStream);
} else {
throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
}
return prop.getProperty(property);
}
因此,如果在您的config.properties
文件中输入
cache.size=1000
致电getPropertyValue("cache.size")
会得到1000