Nacos配置中心注意事项

Nacos 配置注意事项

由于 spring boot 2.4 开始,官方做了优化,可以通过spring.config.import=xxx.properties的方式引入配置.

并且spring-cloud官方从 SpringCloud 2020.x 以上的版本去掉了spring-cloud-starter-bootstrap依赖(以前是内置的),如果需要读取bootstrap.properties或者bootstrap.yml配置文件则需要手动引入。

同时spring-cloud-alibaba为跟spring-cloud官方保持一致,从2021.0.1.0版本开始,默认使用spring.config.import方式引入额外的配置,如果您想继续使用bootstrap 方式加载配置,需要手动引入。

Nacos 配置读取方式

方式一,非bootstrap方式读取Nacos配置:

可以通过在 application.properties 或者 application.yml 配置文件中,添加spring.config.import=nacos:xxx.yml 指定读取 nacos 配置

spring:
  application:
    name: xxx-gateway
  config:
    import:
      - nacos:application-dev.yml		 
      - nacos:nacos-config.properties    # 这里填额外读取Nacos的配置名

# _________分割线_________等同于_____↓
spring:
  application:
    name: xxx-gateway
  cloud:
    nacos:
      config:
        extension-configs:			# 这里填额外读取Nacos的配置名
          - dataId: nacos-config.properties
#            group: ${spring.cloud.nacos.config.group}
#            refresh: true

bootstrap方式读取配置方式虽然读取速度更快,但有局限性。 就是只能读取 spring.config.import指定的配置,并且只能动态变更本地没有配置的属性。什么意思?
假设有一个自定义变量名 user.info 分别定义放在本项目 application.yml 或者 application-dev.yml 下面,同时在Nacos正确的命名空间配置下放入application-dev.yml或者 nacos-config.properties里面,当你变更Nacos上面的user.info信息,你会发现控制台打印的nacos变更还是空的,还是取的本项目的信息。

user:
  info: 取到 application-${spring.profiles.active}.yml的值
  age: 20

这种配置方式,意味着,你本地如果配置了默认值,想nacos动态刷新是不行的,只能动态刷新非本地配置的值,不够人性化,

如果我既想读取 本地的配置,同时又想nacos动态变更。则推荐使用 bootstrap.properties的方式。

方式二: 通过 bootstrap.properties方式读取Nacos配置中心

Nacos 与 Spring cloud 版本对照表 找到你对应的版本

首先可以在项目根pom.xml文件中加入以下依赖:

<properties>
    <spring-cloud.version>2021.0.5</spring-cloud.version>
    <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
</properties>

<dependencyManagement>
     <dependencies>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-dependencies</artifactId>
             <version>${spring-cloud.version}</version>
             <type>pom</type>
             <scope>import</scope>
         </dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-alibaba-dependencies</artifactId>
             <version>${spring-cloud-alibaba.version}</version>
             <type>pom</type>
             <scope>import</scope>
         </dependency>
     </dependencies>
</dependencyManagement>

 <!-- SpringCloud 2020.x 以上的版本 官方去掉了bootstrap依赖,需要手动引入,否则启动报错-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

这种方式的好处就是:配置可控

参考资料

  1. nacoc 官方文档
  2. Nacos 架构&原理
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值