【Apollo配置中心】集成springboot自动监听属性变更和动态发布配置

1. 背景

在实际项目中,Spring Boot项目结合使用Apollo配置中心时,经常会遇到需要更新Apollo上的项目的一些配置,比如测试环境或生产环境中,需要修改某个类的属性值,如果我们在Apollo上更新了配置,已经在运行的Spring Boot项目里默认是不生效的。为了避免重启项目才能生效,需要对Apollo配置更新进行监听,并进行一些处理,达到配置动态更新并生效。
在这里插入图片描述

2. 代码

maven依赖引入
	  <!-- Apollo配置中心 -->
	  <dependency>
		  <groupId>com.ctrip.framework.apollo</groupId>
		  <artifactId>apollo-client</artifactId>
		  <version>1.4.0</version>
	  </dependency>
	  <!-- 监听apollo配置, 实时刷新 -->
	  <dependency>
		  <groupId>org.springframework.cloud</groupId>
		  <artifactId>spring-cloud-context</artifactId>
		  <version>3.1.7</version>
	  </dependency>
监听类实现
package com.zsx.listener;

import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.cloud.context.environment.EnvironmentChangeEvent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Configuration;

/**
 *
 * @description: 监听apollo配置, 实时刷新
 * @author: zsx
 * @date: 2024/6/12 10:56
 */
@Configuration
public class ApolloConfigListener implements ApplicationContextAware {

    /**
     * 日志
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(ApolloConfigListener.class);

    private ApplicationContext applicationContext;

    /**
     * 配置监听
     * ApolloConfigChangeListener > value 属性默认 命名空间 "application"
     *
     * 示例: @ApolloConfigChangeListener(value = {"application", "test_space"})
     */
    @ApolloConfigChangeListener(value = {"application", "application-comm", "application-dao", "common-redis"})
    private void onChange(ConfigChangeEvent changeEvent) {
        for (String key : changeEvent.changedKeys()) {
            LOGGER.info("apollo key = {} refresh", key);
        }
        // 更新相应的bean的属性值,主要是存在@ConfigurationProperties注解的bean
        this.applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys()));
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}
  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Apollo配置中心是一个开源的配置管理平台,它提供了集中式的配置管理和动态配置更新的功能。通过Apollo,开发人员可以将应用程序的配置统一管理起来,并实现配置动态更新。Spring Boot是一个用于快速开发基于Spring框架的应用程序的工具,它提供了一种简化配置和部署的方式。ApolloSpring Boot可以很好地结合使用,通过引入Apollo客户端依赖,应用程序可以从Apollo配置中心读取配置信息,并实时接收到最新的配置更新。这样,开发人员可以更灵活地管理和调整应用程序的配置,提高开发效率和运维便利性。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [SpringBoot整合Apollo配置中心快速入门](https://blog.csdn.net/qq_42667717/article/details/123897120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Apollo配置中心(Springboot接入)](https://blog.csdn.net/wyplj2015/article/details/119420156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值