Apollo配置加载以及改动动态加载
实现
使用@ApolloConfigChangeListener+RefreshScope实现动态加载。
@ApolloConfigChangeListener注解,基于事件监听。使用该注解将会自动注册ConfigChangeListener,监听到Apollo的配置修改。
RefreshScope实现spring刷新配置。
代码
@Component
public class ApolloRefreshListener {
@Resource
private RefreshScope refreshScope;
@Resource
private XxxProperties xxxProperties;
// value是配置的命名空间,interestedKeyPrefixes是配置的前缀名
@ApolloConfigChangeListener(value = "xxx.yml", interestedKeyPrefixes = {"xxx."})
private void cacheRefresh(ConfigChangeEvent changeEvent) {
// 刷新配置类,重新获取配置数据
refreshScope.refresh("xxxProperties");
// 接下来可以开始做业务,对一些对象开始修改
}
}
额外
yaml配置集合
object:
map: {"key":"value","key1":"value1"}
list: ["str1","str2"]
spring加载
@Data
@Configuration
@ConfigurationProperties(prefix = "object")
public class ObjectProperties {
private Map<String, String> map;
private List<String> list;
}