我已经在java中加载了属性文件。
public String getproperties(String property)
InputStream inputStream = new ClassPathResource("test.properties").getInputStream();
Properties testProperties = new Properties();
testProperties.load(inputStream);
inputStream.close();
return testProperties.getProperty(propertyType);
}
它已成功加载。问题是每次加载属性文件而不是只加载一次。 怎么做到这一点?
答案 0 :(得分:4)
将Properties对象存储为方法外的字段,最初为null,并且只在第一次调用时创建它:
private Properties testProperties = null;
public String getproperties(String property)
if (testProperties == null) {
InputStream inputStream = new ClassPathResource("test.properties").getInputStream();
testProperties = new Properties();
testProperties.load(inputStream);
inputStream.close();
}
return testProperties.getProperty(propertyType);
}
答案 1 :(得分:3)
您可以通过执行以下操作轻松缓存属性:
class PropertyContainer {
private static Properties properties;
public static synchronized Properties getProperties() {
if (properties != null) { return properties; }
InputStream inputStream = new ClassPathResource("test.properties").getInputStream();
properties = new Properties();
properties.load(inputStream);
inputStream.close();
}
}
您的旧getproperties
方法将是这样的:
return PropertyContainer.getProperties().getProperty(propertyType);
这当然假设您只需要一个属性文件。
答案 2 :(得分:-1)
只需创建类字段属性属性:) 并保存一次加载值。
答案 3 :(得分:-1)
我通常将它包装成私有方法,将对象存储到私有字段中:
private Properties _testProperties;
private Properties properties() {
if (_testProperties == null) {
InputStream inputStream = new ClassPathResource("test.properties").getInputStream();
_testProperties = new Properties();
inputStream.close();
_testProperties.load(inputStream);
}
return _testProperties ;
}
public String getproperties(String property) {
return properties().getProperty(property);
}