apollo作为应用配置管理中心框架,可以将应用中的配置信息集中管理,且在apollo中修改配置值之后应用中可以动态更新。
动态刷新的原理:应用中配置了apollo后,在spring容器启动过程中,apollo将属性中含有@Value注解与\({}的bean注册到apollo框架定义的注册表中。然后通过http长轮询不停地去获取apollo服务端的配置信息,一旦配置发生变化,apollo会根据配置的key找到注册的bean,然后修改bean的属性,从而实现了配置动态生效。</p> <p>配置值动态刷新的情况有下面几种:1 通过@Value注解读取配置值;2 通过@ConfigurationProperties注解读取配置。</p> <p>(一) @Value 可以添加在method(比如setxxx())、field(属性)、parameter。<span style="color: rgba(255, 0, 0, 1)">apollo中的配置修改后,应用中会动态刷新。</span></p> <p>1)读取简单类型:java基本类型、string等。@Value("\){xxx:defaultvalue}“)
2)读取list、map、set等,或将一定格式的string转为collection:
apollo配置如下
(二)@ConfigurationProperties 读取配置生成bean。
apollo中的配置修改后,应用中不会动态刷新,需要手动编写程序实现动态刷新。因为spring启动时,已读取配置值且生成了对象。之后再修改配置值后,对象中的属性值并不会改变。
(三)数据库连接配置更改后,对已创建连接不会刷新,只对新生成连接对象生效。
(四)针对bean属性值无法动态刷新的问题,有以下几种方法可以实现动态刷新。
1)基于RefreshScope结合@ApolloConfigChangeListener实现

2)基于EnvironmentChangeEvent结合@ApolloConfigChangeListener实现
3)示例代码如下
properties配置
listener方式一
listener方式二

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/164964.html