本文正在参加「Java主题月 - Java 开发实战」,详情查看 活动链接
开篇
这是我参与更文挑战的第5天,活动详情查看: 更文挑战
现在很多的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);
}
看效果
这篇算是简单介绍下好用的框架和使用,如果想了解原理的可以自己阅读源码或者叫我安排~,主要是怕写太多你们看不完,就直接以使用为主,毕竟真正想了解底层是需要花费挺多时间的。
参考
关注+点赞👍收藏❤️不迷路
文章每周持续更新,可以微信搜索「 十分钟学编程 」第一时间阅读和催更,如果这个文章写得还不错,觉得有点东西的话 各位的支持和认可,就是我创作的最大动力,我们下篇文章见!