Nacos配置中心注意事项

文章目录

  • Nacos 配置注意事项
  • Nacos 配置读取方式
        • 方式一,非`bootstrap`方式读取Nacos配置:
        • 方式二: 通过 `bootstrap.properties`方式读取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.5spring-cloud.version>
    <spring-cloud-alibaba.version>2021.0.5.0spring-cloud-alibaba.version>
properties>

<dependencyManagement>
     <dependencies>
         <dependency>
             <groupId>org.springframework.cloudgroupId>
             <artifactId>spring-cloud-dependenciesartifactId>
             <version>${spring-cloud.version}version>
             <type>pomtype>
             <scope>importscope>
         dependency>
         <dependency>
             <groupId>com.alibaba.cloudgroupId>
             <artifactId>spring-cloud-alibaba-dependenciesartifactId>
             <version>${spring-cloud-alibaba.version}version>
             <type>pomtype>
             <scope>importscope>
         dependency>
     dependencies>
dependencyManagement>

 
<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-bootstrapartifactId>
dependency>
<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-configartifactId>
dependency>

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

参考资料

  1. nacoc 官方文档
  2. Nacos 架构&原理

你可能感兴趣的:(Spring,Cloud,Alibaba,Nacos)