[英]How to load Properties only once in java?
I have loaded property file in java. 我已经在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);
}
Its loaded successfully.The problem is every time property file loaded instead of loading only once. 它已成功加载。问题是每次加载属性文件而不是仅加载一次。 How to achieve this? 如何实现呢?
Store the Properties object as a field outside the method, initially null, and only create it on first call: 将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);
}
You can easily cache the properties by doing something like this: 您可以通过执行以下操作轻松地缓存属性:
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();
}
}
Your old getproperties
method would then be something like this: 您的旧getproperties
方法将如下所示:
return PropertyContainer.getProperties().getProperty(propertyType);
This of course assumes that you only need one property file. 当然,这假设您只需要一个属性文件。
只需创建类字段的Properties属性即可:)并在其中保存一次加载的值。
I usually wrap this into a private method, storing the object into a private field: 我通常将其包装到一个私有方法中,将该对象存储到一个私有字段中:
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.