[英]Managing Properties in Java
在编写程序时,我通常使用java.util.Properties类加载包含配置参数的属性文件。
我通常编写一个实用程序类,该类具有get方法来检索单个属性,例如:
public long getConnectionTimeout() {
String textVal=getProperty("connectionTimeout", "1000");
return Long.parseLong(textVal);
}
此方法非常适合我,但是当要处理的属性列表很长时,它会变得有些乏味。
我正在寻找一种更好的方法来做到这一点。
谢谢。
使用HashMap
来存储将与您的属性文件关联的属性,如下所示。 在您的实用程序类中,创建一个HashMap
实例字段。
HashMap<String,String> propertiesMap;
然后,根据需要在构造函数或初始化方法中对其进行初始化。
propertiesMap = new HashMap<String,String>();
使用来自属性文件的数据填充哈希图。
for (String key : properties.stringPropertyNames())
{
String value = properties.getProperty(key);
propertiesMap.put(key, value);
}
然后编写一个通用方法以获取具有其名称的特定属性:
public String getProperty(String name)
{
return propertiesMap.get(name);
}
如果您使用的是Java EE,则可以尝试使用这种方法,该方法利用了CDI(上下文和依赖注入): 使用CDI的Java EE 6中的应用程序配置
另一种方法是可以使用Enums 。 这样,您将可以直接使用常量访问属性。
public static void main(String[] args) {
System.out.println(Properties.USER_NAME.getValue(String.class));
System.out.println(Properties.CONNECTIION_TIMEOUT.getValue(Integer.class));
}
enum Properties {
CONNECTIION_TIMEOUT {
@Override
public <T> T getValue(Class<T> toClass) {
return toClass.cast(1000);//your code goes here
}
},
USER_NAME {
@Override
public <T> T getValue(Class<T> toClass) {
return toClass.cast("Test");//your code goes here
}
},
PASS_WORD {
@Override
public <T> T getValue(Class<T> toClass) {
return toClass.cast("Test");//your code goes here
}
};
public abstract <T> T getValue(Class<T> toClass);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.