我想自动将java.util.Properties
实例中的属性绑定到对象中的字段。
优先选择:
Properties props = ... // has for instance the property "url=http://localhost:8080
MyType myType = ...
PropertiesBinder.bind(props, myType);
assertEquals("http://localhost:8080", myType.getUrl());
推出自己的并不难,但我想知道是否有人已经这样做了?
答案 0 :(得分:1)
BeanUtils.populate(object, map)
Properties extends Hashtable implements Map
,因此您可以在上述方法中使用它。
答案 1 :(得分:1)
如果您只想设置字符串值,这样做(您不需要第三方库):
public static void bind(Properties props, Object obj) throws Exception {
Field field;
Class<?> cLass = obj.getClass();
for (String prop : props.stringPropertyNames()) {
try {
field = cLass.getDeclaredField(prop);
if (field.getType().equals(String.class)) {
if (!field.isAccessible())
field.setAccessible(true);
field.set(obj, props.get(prop));
}
} catch (NoSuchFieldException e) {
System.err.println("no luck");
}
}
}
对于高级内容,我建议使用首选项API,guice,spring,pico容器或我按名称InPUT维护的工具。
答案 2 :(得分:0)
如果您正在进行配置类型的事情,请查看config-magic,它允许您使用注释将配置属性映射到bean getter。
答案 3 :(得分:0)
Property Binder:http://pholser.github.com/property-binder