Spring Cloud Alibaba - 学习笔记 - Nacos配置
发布日期:2021-06-30 14:53:53 浏览次数:3 分类:技术文章

本文共 3733 字,大约阅读时间需要 12 分钟。

Spring Cloud Alibaba - 学习笔记 - 配置文件

各类型配置文件常规用法

bootstrap.yml : 指定服务名称、nacos地址等,连接nacos 和读取配置必须的参数。

application.yml : 本地配置信息。一些常规的配置。
${spring.application.name}-${profile}.${file-extension:properties} : nacos上配置,覆盖本地配置。放一些有动态调整需求的配置比如:数据源配置、redis地址等。

基本概念

关键词 中文名字 默认值 说明
namespace 命名空间 public 习惯上用于区分开发环境
group DEFAULT_GROUP 习惯上用于区分项目,同一个项目放在一组
Data Id 配置文件唯一标识 应用名称+扩展名 对应配置文件名称。注意扩展名保持一致否则读不到。

推荐用法

  1. 官方推荐用 Namespace 区分环境,用 Group 分组管理业务。
  2. 在启动参数中传入-Dspring.profiles.active=dev|test|prod 指定环境。

Nacos 配置加载规则

指定加载

bootstrap.yml 比较常见的写法。

spring:  application:    name: spring-cloud-alibaba-nacos-config # 应用名称  cloud:    nacos:      config:        server-addr: 127.0.0.1:8848 # nacos 地址。端口不能省略。        file-extension: yml #配置文件扩展名

1. dataID 默认

默认拼接:${spring.cloud.nacos.config.prefix}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

  • 配置前缀 spring.cloud.nacos.config.prefix 默认值 spring.application.name(服务名)。
  • 当前环境 默认值 spring.profiles.active 。为空时链接符号-会自动去掉。
  • 配置格式 spring.cloud.nacos.config.file-extension 默认 properties

简化后,有profile${spring.application.name}-${spring.profile.active}.properties

简化后,无profile${spring.application.name}.properties

2. group 默认

  • group 默认为 DEFAULT_GROUP,可通过 spring.cloud.nacos.config.group 配置。

3. namespace 默认

  • namespace 默认 Public, 可通过 spring.cloud.nacos.config.namespace 配置。

加载多个

扩展配置

让应用加载多个配置

  • Deprecated

    spring.cloud.nacos.config.ext-config:以数组方式指定配置

  • spring.cloud.nacos.config.extension-configs:以数组方式指定配置

共享配置

让多个应用共享配置(比如一些相同的公共配置)

  • Deprecated

    只认 DEFAULT_GROUP
    spring.cloud.nacos.config.shared-dataids:设置要加载的配置,多个用逗号分隔
    spring.cloud.nacos.config.refreshable-dataids:设置要自动刷新的配置,多个用逗号分隔。不设默认不自动刷新。

  • spring.cloud.nacos.config.shared-configs:以数组方式指定配置

配置例子

官方参考:

spring:  application:    name: spring-cloud-alibaba-nacos-config # 应用名称  cloud:    nacos:      config:        server-addr: 127.0.0.1:8848 # nacos 地址        namespace: 993d636c-2d9c-4485-9bd3-d2de4ba14f63 #  这里指定test。不填默认空就是 public#        group: DEFAULT_GROUP # 默认 DEFAULT_GROUP 可以省        prefix: log # 配置前缀        file-extension: properties #配置文件扩展名#        file-extension: yml #配置文件扩展名#        file-extension: yaml #配置文件扩展名       # 设置多个配置        extension-configs[0]:          dataid: config-4.yml          group: TEST_GROUP          refresh: true # 自动刷新        extension-configs[1]:          dataid: config-5.yml          group: TEST_GROUP          refresh: true        extension-configs[2]:          dataid: config-6.yml          group: TEST_GROUP          refresh: true        # 共享配置        shared-configs:          - dataid: config-1.yml            refresh: true # 自动刷新          - dataid: config-2.yml            refresh: true          - dataid: config-3.yml            refresh: true

配置 - 优先级

1. spring.profiles.active

注意: bootstrap 正好与 application 相反

文件名.profile:带 profile > 不带 profile 的优先级:bootstrap-dev.yaml > application.yaml

2. 按位置 - 优先级

线上nacos > 线下jar外 > 线下jar内

线下jar包内外的优先级详见:

3. 按类型 - 优先级

先加载 bootstrap 后加载 application

优先级 配置
Top 1 nacos上:${spring.application.name}-${profile}.${file-extension:properties}
Top 2 application.properties
Top 3 application.yml
Top 4 application.yaml
Top 5 bootstrap.properties
Top 6 bootstrap.yml
Top 7 bootstrap.yaml

虽然这里列出来的很花哨,但正常来说项目中我们不可能这样混着写。

4. 按方式 - 优先级

从高到底:

  1. ${spring.application.name}-${profile}.${file-extension} 内置规则(此级别中类型优先级如上)
  2. 扩展配置 spring.cloud.nacos.config.extension-configs 数组索引的优先
  3. 共享配置 spring.cloud.nacos.config.shared-configs 数组索引的优先

动态刷新

方案一、通过 ConfigurableApplicationContext 上下文

@Autowiredprivate ConfigurableApplicationContext context; // 就是启动类中 SpringApplication.run() 返回的对象。...System.out.println("动态更新配置 > "+ context.getEnvironment().getProperty("配置文件中的key") );

方案二、@RefreshScope 注解

在类上添加 @RefreshScope 开启内置配置自动刷新

方案三、扩展配置、共享配置

通过配置项refresh = true 开启。

参考资料

源码

转载地址:https://jerryjin.blog.csdn.net/article/details/114156339 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Win10 休眠按钮不见了
下一篇:Spring Cloud Alibaba - 学习笔记 - 准备工作

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月06日 19时45分40秒