彻底摆脱配置文件 四(基于反射的通用resolve详解)

    之前虽然提供了生成通用resolve的template,改善了代码开发的代价,但生成的resolve过多,导致代码长度过度增长,使用ReflectResolve便可解决这个问题。

    目前resolve从使用方式上有两种情况:

  1. @FieldZkConfigurable(resolve = DemoResolve.DemoF1Resolve.class, dynamicUpdate = true)
    public static String F1 = "F1"
  2. @FieldZkConfigurable(dynamicUpdate = true)
    public static String F2 = "F2";
    
    @FieldZkConfigurable(dynamicUpdate = true)
    public static Boolean F3 = false;

    第一种,明确指定resolve,采用这种方式会比较灵活,一对一对应字段F1,逻辑可以自己方便控制,甚至可以加上一些逻辑而不是简单的赋值。

    第二种,没有指定resolve,采用默认的ReflectResolve,这种方式减少代码的编写,及缓解代码的膨胀,这个resolve,采用反射机制,所以其有一定的局限性,但基本可以满足90%的需求,目前支持字段类型为:String、Long、Integer、Float、Double、Short、Boolean、及自定义类型VisualType(VisualType的子类),从本人测试的效果看,同样非常稳定。


    第二种方式在使用上大大简化了开发者的开发工作,如果您的配置不需要自动动态更新,dynamicUpdate=true都可以去掉,最后只剩下一个简单的注解,即可实现属性的zookeeper配置。

@FieldZkConfigurable
public static Boolean F4 = true;

    

    为了满足大多数用户的需求,除了java中可以使用valueOf方法反序列化的类型之外,还提供了VisualType类型,从名字上看大家应该明白了,就是“可视化类型”,只要您的属性类型继承自VisualType,并重写valueOf和toString方法也可通过ReflectResolve实现zookeeper配置当然也可动态更新。

    最新代码可以从项目主页获取,欢迎大家试用,并提供宝贵意见,当然也非常愿意您的加入!!!


jerry 于 2014-04-02 13:08

你可能感兴趣的:(开源,zookeeper,集群,分布式,zkconfigutil)