因为上面提到,当配置发生变化的时候,需要发布一个RefreshEvent事件来触发刷新配置的功能 。

文章插图
核心的逻辑就是当项目启动的时候,对所使用的配置文件进行注册一个监听器,监听器的实现就是当发生配置改动的时候,就发布一个RefreshEvent事件 。
4、两个配置类4.1 ConfigCenterBootstrapConfiguration

文章插图
配置了ConfigCenterPropertySourceLocator、ConfigCenterProperties、ConfigService
4.2 ConfigCenterAutoConfiguration

文章插图
配置了ConfigContextRefresher、ConfigCenterProperties、ConfigService
最后需要将两个配置类在spring.factories配置一下 。
这里有个需要注意,前面说过,SpringCloud会创建新的容器来加载配置,而这个容器只会加载spring.factories文件中键为@BootstrapConfiguration注解的配置类,所以需要将ConfigCenterBootstrapConfiguration跟BootstrapConfiguration配对,因为ConfigCenterBootstrapConfiguration配置了ConfigCenterPropertySourceLocator 。

文章插图
好了,到这里真的就完成了对SpringCloud整合了 。
二、测试1、新增一个配置文件启动配置中心的server端,然后打开ApiPost,新增一个配置文件

文章插图
新增文件类型为properties一个配置,内容为sanyou.username=sanyou键值对,当然可以写很多键值对,我这里就写了一个,新增成功之后,返回了文件的id:79765c73-c1ef-4ea2-ba77-5d27a64c4685
2、测试客户端这里我为了方便,就把测试代码跟客户端写在同一个服务了,正常情况肯定是把跟SpringCloud代码打成一个依赖引到项目中 。
在bootstrap.yml文件中配置配置中心的相关信息

文章插图
- 配置中心服务端的地址是:localhost:8888
- 使用的配置文件的id是刚才创建的:79765c73-c1ef-4ea2-ba77-5d27a64c4685

文章插图
提供一个接口,注入上面提到的UserService
启动项目,调用接口

文章插图
从断这里可以看出,实际注入的是一个UserService代理对象,并且最终找的是com.sanyou.configcenter.test.UserService@3a1e4fd3这个UserService对象
此时这次调用的返回值就是:sanyou

文章插图
接下来测试一下自动刷新属性的功能
现在修改一下配置中心的sanyou.username为sanyou666

文章插图
静静等待5秒钟 。。
此时控制台打印出 Refresh keys changed: [sanyou.username],也就是sanyou.username属性变了

文章插图
此时再次获取username

文章插图
可以看出,UserService代理对象没变,但是UserService对象已经变成了com.sanyou.configcenter.test.UserService@4237b3cd
此时获取到的username就已经变成了sanyou666

经验总结扩展阅读
- 闲鱼小法庭9票是不是赢了 闲鱼小法庭结束后在哪里查看记录
- 亚洲第一个举办奥运会的国家是?
- 蛋挞液除了做蛋挞还可以做什么
- 家里停水了能开空调吗
- 素士w3冲牙器坏了怎么拆开修理_素士w3冲牙器的拆解
- 为什么红薯粉煮了20分钟还硬
- 五行缺水最吉利的名字女孩 五行缺木缺水最吉利的女孩名字
- 美容美甲店名字大全 时尚ins美甲店名字大全
- 冻香肠煮20分钟熟了吗
- 思绪摇摆还是对你冷不起来对你充满了期待是什么歌