Apollo监听配置自动更新,不用在重启服务啦

  • Post author:
  • Post category:其他






前言




最近接触到了apollo的使用,由于原来一直用nacos,知道nacos在不重启服务的情况下可以监听到配置更新,利用@RefreshScope注解来实现,但是apollo并不支持。





一、说明


一般我们在使用动态配置的时候有两种方式


1、@Value apollo自动监听


2、以配置文件的形式使用

@ConfigurationProperties ,也就是这种形式在apollo中

@RefreshScope注解不在能够监听到配置变化,需要我们自己实现一个监听器来实现。




二、监听器的实现





代码如下:

@Component
@Slf4j
public class ApolloPropertiesChangedListener implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    @ApolloConfigChangeListener
    private void someChangeHandler(ConfigChangeEvent changeEvent) {
        for (String key : changeEvent.changedKeys()) {
            ConfigChange change = changeEvent.getChange(key);
            log.info("Found change - {}", change.toString());
        }
        // 更新相应的bean的属性值,主要是存在@ConfigurationProperties注解的bean
        this.applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys()));
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}




总结


将这个监听器放到项目中,在项目启动的时候修改配置 实时生效。



版权声明:本文为flowery_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。