开篇
现在很多的Java开发者都使用过Spring Cloud,那么在使用注册中心组件的时候,是不是都有自动服务发现,配置更新的功能。其底层的逻辑就是定时从配置中心去读取数据,并且更新内存中相关配置,并且通知监听的监听器更新内容。
那么接下来就要介绍一个好用的框架archaius
, 如果你有以下问题或需求:
- 从配置中获取最新配置,加载到本地内存。
- 配置中心的配置发生变化,动态更新本地内存中的。
- 配置中心的配置发生变换,接收并做出响应。
- 动态变更数据源等。
使用前须知
- 默认读取的配置文件路径为 resource目录下的config.properties文件, 可用通过系统参数
archaius.configurationSource.additionalUrls=clssspath:application.properties
- 追加要读取的文件
- 默认定时读取配置内容为60000ms,即一分钟,可以通过系统参数
archaius.fixedDelayPollingScheduler.delayMills=100修改
- 改动了配置文件的内容,需要重新编译,因为程序运行时读取的是编译代码的目录,不是开发代码的目录
实例演示
- 引入依赖jar
<dependency> <groupId>com.netflix.archaius</groupId> <artifactId>archaius-core</artifactId> <version>0.7.7</version> </dependency> 复制代码
- 调用相关api
// 获取对象实例 DynamicPropertyFactory instance = DynamicPropertyFactory.getInstance(); // 第一个参数是属性名,第二个是默认值 DynamicStringProperty nameProperty = instance.getStringProperty("myname", "default"); // 添加回调监听 nameProperty.addCallback(() -> System.out.println("name属性值发生变化:")); // 2秒钟读一次 while (true) { System.out.println(nameProperty.get()); TimeUnit.SECONDS.sleep(2); } 复制代码
看效果
myname=我有名字了
sdfdfdfsdfsd sdfdfdfsdfsd name属性值发生变化:我有名字了我有名字了我有名字了 我有名字了
这篇算是简单介绍下好用的框架和使用,如果想了解原理的可以自己阅读源码或者叫我安排~,主要是怕写太多你们看不完,就直接以使用为主,毕竟真正想了解底层是需要花费挺多时间的。