三、客户端配置获取

XXL-CONF 提供多种配置方式,包括 "API、 @XxlConf、XML" 等多种配置方式,介绍如下。

可参考项目 "xxl-conf-sample-spring"(接入XXl-CONF的示例项目,供用户参考学习),代码位置:com.xxl.conf.sample.controller.IndexController.index()

3.1 方式1: API方式

参考 "IndexController" 代码如下:

  1. String paramByApi = XxlConfClient.get("default.key01", null);
  • 用法:代码中直接调用API即可,示例代码 ""XxlConfClient.get("key", null)"";
  • 优点:
    • 配置从配置中心自动加载;
    • 存在LocalCache,不用担心性能问题;
    • 支持动态推送更新;
    • 支持多数据类型;

3.2 方式2: @XxlConf 注解方式

参考 "DemoConf.paramByAnno" 属性配置;示例代码

  1. @XxlConf("default.key02")
  2. public String paramByAnno;
  • 用法:对象Field上加注解 ""@XxlConf("key")",支持设置默认值,支持设置是否开启动态刷新;
  • 优点:
    • 配置从配置中心自动加载;
    • 存在LocalCache,不用担心性能问题;
    • 支持动态推送更新;
    • 支持设置配置默认值;
    • 可配置是否开启 "动态推送更新";
      |“@XxlConf”注解属性|说明
      |——-
      |value|配置Key
      |defaultValue|配置为空时的默认值
      |callback|配置更新时,是否需要同步刷新配置

3.3 方式3: XML占位符方式

参考 "applicationcontext-xxl-conf.xml" 中 "DemoConf.paramByXml" 属性配置;示例代码如下:

  1. <bean id="demoConf" class="com.xxl.conf.sample.demo.DemoConf">
  2. <property name="paramByXml" value="$XxlConf{default.key03}" />
  3. </bean>
  • 用法:占位符方式 "$XxlConf{key}";
  • 优点:
    • 配置从配置中心自动加载;
    • 存在LocalCache,不用担心性能问题;
    • 支持动态推送更新;

3.4 方式4: "XML + API" 混合方式

参考如下代码:

  1. <bean id="demoConf" class="com.xxl.conf.sample.demo.DemoConf2">
  2. <constructor-arg index="0" value="# {T(com.xxl.conf.core.XxlConfClient).get('key')}" />
  3. <property name="paramByXml" value="# {T(com.xxl.conf.core.XxlConfClient).get('default.key03')}" />
  4. </bean>
  • 用法:占位符方式 "# {T(com.xxl.conf.core.XxlConfClient).get('key')}";
  • 优点:
    • 配置从配置中心自动加载;
    • 存在LocalCache,不用担心性能问题;
    • 兼容性好:在一些特殊的XML配置加载场景,如 "XML构造器传参"、"自定义spring的schema/xsd" ,上述几种方式不适用,此时可以考虑这种方式,兼容各种场景格式;
  • 缺点:
    • 不支持动态推送更新;

3.5 其他方式: 配置变更监听

可开发Listener逻辑,监听配置变更事件;可据此实现动态刷新JDBC连接池等高级功能;

参考 "IndexController" 代码如下:

  1. XxlConfClient.addListener("default.key01", new XxlConfListener(){
  2. @Override
  3. public void onChange(String key, String value) throws Exception {
  4. logger.info("配置变更事件通知:{}={}", key, value);
  5. }
  6. });

来源(书栈小编注)

http://www.xuxueli.com/xxl-conf/#/