springboot集成Apollo实时监听同步更新最新值
前言:
Apollo是携程开源的配置中心组件,在使用Apollo配置中心的时候,我们时常需要自己写热更新属性的代码,Apollo也提供了热更新,只不过目前只支持@Value注解的热更新,但一些场景下,我们都是对Apollo获取的结果进行处理后,例如封装成集合或者bean才使用,所以这里存在个问题,就是Apollo配置更新了,但是bean或者封装的集合没有更新。
解决方案
封装成集合使用热更新:
方案一:
采用Apollo自带的热更新(@Value)Apollo配置:
package com.lyj.demo;
import com.ctrip.framework.apollo.model.ConfigChange;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
/**
* @author 凌兮
* @date 2020/8/18 14:48
* 退货险国家配置获取(配置在Apollo中)
*/
@Component
@Data
@Slf4j
public class ReturnInsuranceCountryConfig {
private static final String sKey = "s_insurance_country_config";
private static final String rKey = "r_insurance_country_config";
@Value("${" + sKey + ":''" +