█微信号█137★1009★7773供卵试管婴儿代孕选性别生男孩 ██试管包出生██代孕男孩██代孕包出生███代孕选性别██试管婴儿███代孕生男孩█████试管婴儿代孕生男孩██
本地编译好confiApi的工程后,就可以在工程中导入api使用:
1、maven包导入
<dependency>
<groupId>com.zk.config.api</groupId>
<artifactId>configApi</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2、spring配置
<bean id="configProperties" class="com.zk.config.api.factory.CustomizedPropertyConfigurer">
<property name="configClient">
<list>
<ref bean="configClient" /> <!-- 导入zookeeper里节点后缀为.properties的文件-->
</list>
</property> </bean> <bean id="configClient" class="com.zk.config.api.client.ConfigClient" scope="singleton" init-method="init"> <constructor-arg index="0" value="192.168.3.6:2181,192.168.3.7:2181/configManagement/configWeb/dev" /> <!-- zookeeper的Host+配置管理根目录名+工程名+分支(如:dev,test,prod) --> <constructor-arg index="1" value="30000" /> <!-- zookeeper初始化连接超时参数connectTimeout,单位毫秒 --> <constructor-arg index="2" value="0" /> <!-- 定时刷新缓存数据的时间间隔,单位毫秒,0是不刷新 --> <constructor-arg index="3" value="true" /> <!-- 是否打开对节点的动态监听 --> <constructor-arg index="4" ref="configProperties" /> <!-- 支持动态取值的Properties --> <constructor-arg index="5" value="guest:guest123" /> <!-- 管理界面打开节点安全性管理之后,api需要提供用户:密码才能访问到数据 --> </bean>
3、接下来可以像spring导普通属性文件一样简洁的使用zookeeper上的配置数据了。 如:spring配置文件中的bean可以使用${user}这样的常规注入方式注入zk上的值,如下所示:
<bean id="test" class="com.zk.config.api.test.Test" init-method="init" scope="prototype">
<property name="user" value="${user}" />
<property name="userName" value="${userName}" />
</bean>
同样类文件中也可以这样注入
注意:
1、普通注入的值是创建对象后一次性缓存的值,要使用监听的动态变化的值,请使用注入的Properties对象获取(如这里定义的configProperties),或者直接通过静态缓存对象获取ConfigClient.getPropertiesValue(key)。ConfigClient缓存对象是最早被初始化的静态对象,项目里的其他静态对象可以直接获取到相关的缓存内容,多个client的时候,key或者节点路径相同的则最后一个client的配置有效。
2、zookeeper上名称带.properties后缀的节点会自动识别成Properties文件,如果xml格式的properties文件可以在节点后加.properties后缀,支持识别,其他后缀的都做普通文件处理,通过ConfigClient.getFileValueByNodePath(nodePath)来获取节点文件内容,nodePath是节点的相对路径。
3、zookeeper上的节点名以log4j.properties为后缀的日志配置文件将会默认自动装载,如果是其他日志文件如log4j.xml,请把configClient对象的log4jPathName属性值设为该文件名,如果要取消自动装载,设空串,如:
<property name="log4jPathName" value="" />
4、以冒号(:)开头的节点或目录将自动映射到本地的classpath路径下,让工程运行时调用。