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

1.nacos官方网址链接

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配置要正确,否则会不生效
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值