【Nacos】Java代码监听nacos配置变更

监听nacos配置变更

监听配置修改



import cn.hutool.core.util.StrUtil;
import com.alibaba.cloud.nacos.NacosConfigManager;
import com.alibaba.nacos.api.config.ConfigChangeEvent;
import com.alibaba.nacos.api.config.ConfigChangeItem;
import com.alibaba.nacos.client.config.listener.impl.AbstractConfigChangeListener;
import com.deyatech.common.Constants;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class NacosConfigListener extends AbstractConfigChangeListener implements InitializingBean {
    @Resource
    private NacosConfigManager nacosConfigManager;
    @Override
    public void afterPropertiesSet() throws Exception {
        nacosConfigManager.getConfigService().addListener("global.yaml", "DEFAULT_GROUP", this);
    }

    @Override
    public void receiveConfigChange(ConfigChangeEvent event) {
        for (ConfigChangeItem changeItem : event.getChangeItems()) {
            String value = changeItem.getNewValue();
            String key = changeItem.getKey();
            if (key.equals("system-upload-prefix.upload") && StrUtil.isNotEmpty(value)) {
                Constants.UPLOAD_DEFAULT_PREFIX_URL = value;
                System.out.println("Listener UPLOAD_DEFAULT_PREFIX_URL -> " + Constants.UPLOAD_DEFAULT_PREFIX_URL);
            }
        }
    }

}

结果保存对象

@Component
public class Constants {
    @Autowired
    SystemUploadPrefix systemUploadPrefix;
    @PostConstruct
    public void loadSystemUploadPrefix() {
        if (StrUtil.isNotEmpty(systemUploadPrefix.getUpload())) {
            UPLOAD_DEFAULT_PREFIX_URL = systemUploadPrefix.getUpload();
        }
        System.out.println("Constants UPLOAD_DEFAULT_PREFIX_URL -> " + UPLOAD_DEFAULT_PREFIX_URL);
    }
}

配置对象

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;


@ConfigurationProperties(prefix = "system-upload-prefix")
@Configuration
@RefreshScope
@Data
public class SystemUploadPrefix {
    private String upload;
}

配置

system-upload-prefix:
 upload: /upload/

 

posted @ 2026-05-07 17:54  谷粒-笔记  阅读(14)  评论(0)    收藏  举报