为何设想 DuiC
在工作中我们经常要根据差别环境设置差别的参数,让项目的天真性、可用性变得更高,那天真的设置就变得必不可少,虽然现在已存在许多设置治理解决方案,然则治理体式格局局限性大,顺应局限窄。
DuiC 在设想初就考虑到设置的运用局限,将设置猎取体式格局设想为 RESTful API 的体式格局,可支撑任何服务器端,客户端以及 WEB 轻松猎取设置。其次 DuiC 治理设置一致采纳 YAML 的体式格局,并供应 WEB 编辑器及语法高亮,语法校验等功用,下降设置修正的错误率。
DuiC 源码:
https://github.com/zhudyos/duic
已完成的功用
- 搜检设置状况
- 经由过程 key 猎取某个设置
- 经由过程 name/profile 猎取团体设置
- 多个 profile 设置深度兼并
- 设置权限治理
- 分布式设置治理
- 容器布置
Swagger 文档:
https://app.swaggerhub.com/ap…Docker 镜像:
https://hub.docker.com/r/zhud…
Java Client API
DuiC 供应 Java 客户端 API 协助你疾速猎取设置,支撑 Android/Java/JavaWeb/Spring 猎取设置同时支撑热加载设置。
duic-java-client:
https://github.com/zhudyos/du…
Java/Android 运用
运用 API 供应的 ConfigUtils
工具包猎取设置。
建立 Config 实例并将设置为 ConfigUtils 的默许设置,运用。
Config config = new Config.Builder()
.baseUri("https://duic.zhudy.io/api/v1")
.name("hello")
.profile("world")
// .configToken("...")
// .reloadPlot(new ReloadPlot(10, TimeUnit.SECONDS)) // 重载
// .failFast(true) // 疾速失利
// .listener() // 设置加载监听
.build();
ConfigUtils.setDefaultConfig(config);
Java Web 运用
运用 API 供应的 ConfigUtils
工具包猎取设置。
在 web.xml 中设置监听器
<!-- 默许设置途径 classpath:duic.properties -->
<context-param>
<param-name>duicConfigLocation</param-name>
<param-value>classpath:duic.properties</param-value>
</context-param>
<listener>
<listener-class>io.zhudy.duic.config.web.DuicConfigContextListener</listener-class>
</listener>
在 duic.properties 文件中增添设置治理中心信息
duic.base.uri=https://duic.zhudy.io/api/v1
duic.name=hello
duic.profile=world
duic.config.token=
duic.reload.period=10
duic.reload.unit=SECONDS
duic.fail.fast=false
# 多个 DuicListener 采纳英文逗号(,)分开
duic.listeners=xx.MyDuicListener
在 Spring 中运用
- 运用 API 供应的
ConfigUtils
工具包猎取设置 - 运用
@Value
的体式格局注入设置(引荐)
以上2种体式格局都支撑热加载,引荐运用 @Value
的体式格局注入设置,这类体式格局关于你的代码没有任何的浸入性,支撑 spring3.2 以上的版本运用。
运用注解的体式格局初始化
@Bean public static DuicConfigBeanFactoryPostProcessor duicConfigBeanFactoryPostProcessor() { DuicConfigBeanFactoryPostProcessor processor = new DuicConfigBeanFactoryPostProcessor(); processor.setBaseUri("https://duic.zhudy.io/api/v1"); processor.setName("hello"); processor.setProfile("world"); return processor; }
运用 XML 的体式格局初始化
<bean id="duicConfigBeanFactoryPostProcessor" class="io.zhudy.duic.config.spring.duicConfigBeanFactoryPostProcessor"> <property name="baseUri" value="https://duic.zhudy.io/api/v1"/> <property name="name" value="hello"/> <property name="profile" value="world"/> </bean>
注入设置
@Component
public class Example {
@Value("${k1.string}")
private String k1;
}
Spring Boot 支撑
DuiC 也供应了 duic-spring-cloud-config-client 来支撑 spring-boot,运用 DuiC 治理设置能够完整替换 spring-cloud-config。
duic-spring-cloud-config-client:
https://github.com/zhudyos/du…
该工具包支撑 @ConfigurationProperties
及 @Value
注入设置,同时也支撑热加载。
注重假如你运用 @ConfigurationProperties
注入设置而且想要热加载设置须要合营运用 @RefreshScope
注解。
关于更多 @RefreshScope
的材料请检察 spring-cloud 官方文档:https://cloud.spring.io/sprin…
运用示例在 bootstrap.yml 文件中增添以下设置
spring:
application:
name: samples (1)
duic:
spring:
cloud:
config:
watch:
enabled: true (2)
initial_delay: 10000 (3)
fixed_delay: 10000 (4)
uri: https://duic.zhudy.io/api/v1 (5)
profile: first,second (6)
# token: [TOKEN] (7)
duic docker-compose
关于 DuiC 越发细致的形貌,能够检察堆栈中在 readme。
在线演示平台:
https://duic.zhudy.io/index.htmle-mail: kevinz@weghst.com
password: 123456
人人能够运用在线演示平台,尝试运用其供应的 API 及 SDK。
友谊提示:服务器设置较差,接见速率能够不是很快,请体贴。