彻底摆脱配置文件 八(使用maven-zkcu-plugin灵活控制zkconfigutil)

原创
2015/04/17 11:12
阅读数 633

    惯例,我们从使用上开始。

    首先,下载并构建maven-zkcu-plugin 地址:https://github.com/jerrysearch/zkcu-plugin

    这是一个maven工程,采用maven构建并install本地即可。


    接下来我们主要看效果:

        我有一个配置类,如下:

@TypeZkConfigurable
public class StaticClass {
	@FieldZkConfigurable(dynamicUpdate = true)
	public static String a = "hello world a";
	@FieldZkConfigurable
	public static String b = "hello world b";
	
	
	@TypeZkConfigurable
	public static class InClass{
		@FieldZkConfigurable(dynamicUpdate = true)
		public static String c = "hello world c";
	}
}

 接下来看下关键的,如何使用maven-zkcu-plugin,实现彻底摆脱配置文件,并又能灵活控制配置功能开关。

<plugin>
    <groupId>com.jerry</groupId>
    <artifactId>maven-zkcu-plugin</artifactId>
    <version>0.1.1</version>

    <configuration>
	<zk>127.0.0.1:2181</zk>
	<mainClass>com.jerry.testplugin.TestStatic</mainClass>
	<zkConfigurableClass>
	    <parm>com.jerry.testplugin.StaticClass</parm>
	    <parm>com.jerry.testplugin.StaticClass$InClass</parm>
	</zkConfigurableClass>
    </configuration>
</plugin>
    这里有几个参数,其中zk代表配置项保存在哪个zookeeper上;mainClass代表你的程序启动的主函数;zkConfigurableClass代表所有工程里需要配置的类,也就是添加了

@TypeZkConfigurable注解的类

    看看如何使用,在你工程pom文件所在目录下,执行maven clean compile zkcu:zkcu jar:jar 即可,强调下,zkcu必须在compile阶段之后执行,ok,现在你的服务已经有了zkconfigutil的功能。

    有些时候,可能想关掉zkconfigutil,那么执行maven clean package,也就是去掉zkcu:zkcu即可。

    特别强调下,zkcu这个plugin只能用户手动执行,无法被绑到某个maven生命周期上,这样做的目的是可能由用户控制zkconfigutil的开关。


总结:zkconfigutil采用注解的方式,实现了一个服务的配置项zookeeper化,增加dynamicUpdate = true,即可实现服务内部参数的动态更新,采用maven plugin方式,可以灵活在构建工程时控制是否使用zkconfigutil功能。 另外,如果不想将一些参数直接写在zkcu-plugin下面,也可以采用-D参数形式,为该plugin提供参数。


    jerry于2015-04-17

    北京

展开阅读全文
加载中
点击加入讨论🔥(2) 发布并加入讨论🔥
打赏
2 评论
0 收藏
0
分享
返回顶部
顶部