Apollo 配置中心使用@ConfigurationProperties,配置实时更新失败

本文探讨了在使用Apollo配置中心时,通过@ConfigurationProperties注解的配置无法实现实时更新的问题。首先,@value注解可以实现配置的实时更新,但@ConfigurationProperties不行。接着,尝试添加监听配置也未能解决问题。在调试过程中发现,问题出在DruidDataSource的数据源绑定上,由于使用的Druid版本较低,导致更新失败。解决方法是将Druid版本升级到1.1.5。然而,即使如此,当使用Apollo删除配置key时,配置仍未更新,这一问题目前尚未查明原因。
摘要由CSDN通过智能技术生成

1. 使用@value 注解,配置实时更新,使用@ConfigurationProperties 注解配置无实时更新

2.添加监听配置,配置还没有实时更新

@Configuration
public class ConfigRefresh {

    @Autowired
    private ApplicationContext cxt;

    @ApolloConfigChangeListener
    public void onChange(ConfigChangeEvent event) {

        Map<String, Object> configBeanMap = cxt.getBeansWithAnnotation(ConfigurationProperties.class);
        if(null != configBeanMap && !configBeanMap.isEmpty()) {
            Set<String> keys = new HashSet<>();
            for(Map.Entry<String, Object> entry : configBeanMap.entrySet()) {
                if(null != entry) {
                    String className = entry.getKey();
                    Object configClass = entry.getValue();
                    if(configClass != null && null != className && !"".equals(className)) {
                        ConfigurationProperties configurationProperties = configClass.getClass().getAnnotation(ConfigurationProperties.class);
                        if(configurationProperties != null) {
                            String prefix = configurationProperties.prefix();
                            if(null != prefix && !"".equals(prefix.trim())) {
                                for(String changeKey : event.changedKeys()) {
                                    if(changeKey.startsWith(prefix)) {
                                        keys.add(changeKey);
                                    }
                                }
                            }
                        }
            
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值