Spring boot 中Nacos应用(获取配置以及监听)

1.nacos官方网址链接

2.nacos开发依赖

<!-- nacos -->
    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-spring-context</artifactId>
        <version>0.3.6</version>
    </dependency>

3.nacos开发应用

3.1使用注解获取nacos配置

/**
 * @author denghengtong
 * @date 2021/9/23-10:05
 */
@Configuration
//@PropertySource("classpath:properties/nacos.properties")
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "${nacos.server-addr}", namespace = "${nacos.namespace}"))
@NacosPropertySource(dataId = "${nacos.param.data.id}", groupId = "${nacos.group.id}", autoRefreshed = true, first = true)
public class NacosConfiguration {

}
    EnableNacosConfig配置nacos的地址,命名空间等内容 NacosPropertySource指定data_id 和group
/**
 * 启动类
 */
@SpringBootApplication
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "${nacos.server-addr}", namespace = "${nacos.namespace}"))
public class NacosApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosApplication.class, args);
    }

}
    也可以直接写在启动类上

3.2 获取nacos配置

/**
	 * 第一种   通过注解方式注入
	 * /
	@NacosValue(value = "${datasource.url:not found}", autoRefreshed = true)
    private String value;

	/**
	 * 第二种   通过接口方式获取
	 * /
    public void getConfig() {
        Map<String, String> paramsMap = new HashMap<String, String>();
        paramsMap.put("tenant",namespace);
        paramsMap.put("dataId",dateId);
        paramsMap.put("group",group);

        String config = null;
        try {
            //以接口的形式获取最新配置
            config = HttpUtils.doGet(url, paramsMap);
        } catch (Exception e){
            System.out.println("获取Nacos配置异常");
            System.out.println(e);
        }

        //解析配置
        ......
    }
    第一种注解方式比较简单直接 第二种则是获取整个data_id的配置,需要手动进行解析,但是扩展性更高,而且不需要进行3.1的注解配置

3.3 nacos监听

    如果使用的是注解方式,则可以跳过这一步,因为注解中配置autoRefreshed = true已经是可以自动刷新配置了, 但是如果采用第二种解析方式,把配置储存到缓存当中,则建议使用监听的方式, 监听配置更新后,回调解析方式,重新刷新配置,免去手动清空缓存的情况
/**
     * 监听nacos配置变动后自动刷新缓存
     */
    @NacosConfigListener(dataId = "config.properties")
    public void listenerNacosConfig(String config){
        //清空缓存
        this.clearConfigMap();
        //重新解析配置
        .......
    }
    NacosConfigListener会在nacos进行更改后获取到最近的配置给到config中 不过注意的是,3.1中的EnableNacosConfig配置要正确,否则会不生效
经验分享 程序员 微信小程序 职场和发展