前提:
无需重启项目,动态配置配置文件
第一步
使用处添加@RefreshScope 动态刷新注解
实例
第二步
Data Id :对应服务名
Group:服务名对应的分组名称
配置格式:根bootstrap.yml中指定的file-extension相同
实例
第三步
点击发布 此时就可以看到控制台输出的信息
@RefreshScope
- 需要动态刷新的类标注@RefreshScope 注解
- @RefreshScope 注解标注了@Scope 注解,并默认了ScopedProxyMode.TARGET_CLASS; 属性,此属性的功能就是在创建一个代理,在每次调用的时候都用它来调用GenericScope get 方法来获取对象
- 如属性发生变更会调用 ContextRefresher refresh() -》RefreshScope refreshAll() 进行缓存清理方法调用,并发送刷新事件通知 -》 GenericScope 真正的 清理方法destroy() 实现清理缓存
- 在下一次使用对象的时候,会调用GenericScope get(String name, ObjectFactory<?> objectFactory) 方法创建一个新的对象,并存入缓存中,此时新对象因为Spring 的装配机制就是新的属性了。