专栏首页行者常至SpringBoot 中 @ConfigurationProperties 配置后 apollo 自动刷新

SpringBoot 中 @ConfigurationProperties 配置后 apollo 自动刷新

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

本文链接:https://blog.csdn.net/qwdafedv/article/details/103117320

1、在配置文件(如:application.properties)中,开启Apollo的自动更新

spring.boot.enableautoconfiguration=true

2.实现ApplicationContextAware

package com.qbz.test.commons.web.config;


import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.environment.EnvironmentChangeEvent;
import org.springframework.cloud.context.scope.refresh.RefreshScope;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * apollo 自动刷新
 *
 * @author qubianzhong
 * @Date 20:32 2019/11/11
 */
@Component
@Slf4j
public class ApolloRefreshConfig implements ApplicationContextAware {

    ApplicationContext applicationContext;

    @Autowired
    RefreshScope refreshScope;

	//这里指定Apollo的namespace,非常重要,如果不指定,默认只使用application
    @ApolloConfigChangeListener(value = {ConfigConsts.NAMESPACE_APPLICATION,"business","everything"})
    public void onChange(ConfigChangeEvent changeEvent) {
        for (String changedKey : changeEvent.changedKeys()) {
            log.info("apollo changed namespace:{} Key:{} value:{}", changeEvent.getNamespace(), changedKey, changeEvent.getChange(changedKey));
        }
        refreshProperties(changeEvent);
    }

    public void refreshProperties(ConfigChangeEvent changeEvent) {
        this.applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys()));
        refreshScope.refreshAll();
    }

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • apollo与springboot集成实现动态刷新配置

    Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程...

    lyb-geek
  • 不要群里问了,Apollo这个坑你现在就记好!

    项目用的springboot,连带着配置中心也一直用的spring的配置中心,但是一直以来都有各种问题:

    Bug开发工程师
  • spring boot整合apollo

    由于apollo是提供配置管理的服务,即项目的配置需要统一存放在apollo上进行管理。对于单体项目来说需要与apollo进行通信并获取项目本身需要的配置信息。...

    写一点笔记
  • Spring boot 集成apollo达到配置的热加载

    我们的系统集成了携程的配置中心Apollo 让我们在开发和迭代中得到了很大的方便。尤其是配置的热加载。让我们避免了多次生产发布的情况。他拥有可视化的配置界面(以...

    居士
  • TSE的Apollo配置中心托管上线了!Java 代码教学

    配置中心是大部分服务的强需求。自己运维一套会各种踩坑。现在云上的TSE已经支持了Apollo的托管,一键部署~ 还不心动么?这篇文章,我来介绍一下如何使用Jav...

    Yagr Xu
  • Spring Boot 2.0 整合携程Apollo配置中心

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治...

    JAVA葵花宝典
  • Spring Boot 2.0 整合携程Apollo配置中心

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治...

    框架师
  • Spring Boot 2.0 整合携程Apollo配置中心

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限...

    Bug开发工程师
  • 改个配置还要重启?是时候了解下Apollo了!

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治...

    Bug开发工程师
  • Apollo在基础架构中的实践经验

    Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程...

    Bug开发工程师
  • Apollo在基础架构中的实践经验

    Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程...

    猿天地
  • SpringBoot整合Apollo看这篇文章基本够了

    通过对比,可以看出,生产环境中 Apollo 相比 Spring Cloud Config 更具有优势一些。

    黎明大大
  • K8S 环境下的使用 ConfigMap 进行远程配置

    分布式远程配置是应用程序开发的一个重要特性,目前有多种流行的工具,比如:spring-cloud-config, apollo, disconf, nacos ...

    谢正伟
  • (很全面)SpringBoot 集成 Apollo 配置中心

    . 六、Kubernetes 的 SpringBoot 应用使用 Apollo 配置中心

    JAVA葵花宝典
  • SEATA 分布式事务入门DEMO

    在eureka中看到如下8091端口的服务之后,即启动seata-server正常!

    Isaac Zhang
  • zuul集成apollo动态刷新配置

    一笠风雨任生平
  • 【基础系列】ConfigurationProperties 配置绑定中那些你不知道的事情

    在 SpringBoot 项目中,获取配置属性可以说是一个非常简单的事情,将配置写在aplication.yml文件之后,我们就可以直接通过@Value注解来绑...

    一灰灰blog
  • Spring Boot之yaml配置注入基本使用

    1、在springboot项目中的resources目录下新建一个文件 application.yml 2、编写一个实体类 Dog;

    兮动人
  • SpringBoot之SpringBoot自定义Starter场景启动器

      相信能看到这里的应该清楚什么是场景启动器,而SpringBoot能够快速整合第三方环境依靠的就是Maven整合依赖+自定义Starter

    彼岸舞

扫码关注云+社区

领取腾讯云代金券