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

本文介绍了一种名为ReflectResolve的方法,该方法能够简化配置并减少代码膨胀。ReflectResolve通过反射机制来减少代码编写工作,适用于String等基本类型及自定义类型VisualType。此外,还提供了动态更新等功能。

    之前虽然提供了生成通用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

转载于:https://my.oschina.net/jerrysearch/blog/215418

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值