总览见 hc-tools
[TOC]
注:当前版本仅作为防腐层,后续版本可能会支持各配置中心
待完善功能:backup、数据写入、数据错误处理
<dependency>
<groupId>cn.hc</groupId>
<artifactId>hc-tool-config</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
常量类属性支持字符串、数字、布尔值、自定义类
final不支持类型:byte, char, short, int, long, float, double, boolean; 再加上 Literal String 类型(直接双引号字符串)
- 2种初始化方式
1、常量类上添加注解 cn.hc.tool.config.annotation.ConfigAnno
2、调用方法 AbsConfiguration.addConstant() 添加常量类
package cn.hc.tool.config.constant;
public class CommonConfig {
/**
* 开关-是否走地址转换,默认开启
* 开启-走地址转换, 关闭-不走地址转换
*/
public static boolean ADDRESS_RPC_SWITCH = true;
/**
* 开关-入参是否转新地址(出参与之相反),默认开启
* 开启-转新地址, 关闭-转老地址
*/
public static boolean ADDRESS_MAPPING_SWITCH = true;
/**
* 开关-出参是否转新地址,默认关闭
* 开启-转新地址, 关闭-转老地址
*/
public static boolean ADDRESS_OUT_MAPPING_SWITCH = false;
}
使用场景:三级地址列表,如果实时性有偏差,可添加缓存,开关更新时清空缓存
// jdk7
ConfigFactory.register("ADDRESS_MAPPING_SWITCH", new ConfigListener() {
@Override
public void onUpdate(String key, Object oldVal, Object newVal) {
log.info("=============更新数据,key:{},old:{},new:{}", key, oldVal, newVal);
}
});
// jdk8 lambda表达式
ConfigFactory.register("ADDRESS_RPC_SWITCH", (String key, Object oldVal, Object newVal) -> {
log.info("=============更新数据,key:{},old:{},new:{}", key, oldVal, newVal);
}
);
// 正则监听
ConfigFactory.register("LOG_LEVEL(\\.\\w+)+$", (String key, Object oldVal, Object newVal) -> {
log.info("=============更新数据,key:{},old:{},new:{}", key, oldVal, newVal);
}
);
使用场景:通过get方式获取配置,主要用于快速从ucc切换到ducc
- 1.5.1 获取字符串值:ConfigUtil.get(String key)
// 当未进行配置时会返回null,需自行判空
String uccTimeout = ConfigUtil.get("hbase_crumbs_timeout");
- 1.5.2 获取布尔值:ConfigUtil.getBool(String key)
// 当未进行配置时会返回null,需自行判空
if (ConfigUtil.getBool("jmq_degrade_all_send")) {
// ...
}
- 1.5.3 获取布尔值:ConfigUtil.bool(String key)
// 当未进行配置时会返回false
if (ConfigUtil.bool("jmq_degrade_all_send")) {
// ...
}
- 1.5.4 获取布尔值:ConfigUtil.bool(String key, boolean defVal)
// 当未进行配置时会返回 ${defVal}
if (ConfigUtil.bool("jmq_degrade_all_send"), true) {
// ...
}
使用场景:使用版本号
@IpConf
字段加上该注解,会更新到对应版本号
public class ConfigConstant {
/** 商详pc版本号 */
@IpConf
public static String ITEM_STATIC_PC_VERSION;
}