Nacos作为配种中心的使用有2个方面
-
仅作为动态获取配置文件中的属性
-
系统启动文件也放到配置中心,比如像数据库,mvc这样的系统启动配置文件
如果不需要将系统启动文件也放到nacos中只需要引入 nacos-config-spring-boot-starter
具体参考:Nacos Spring Boot 快速开始
启动文件放入Nacos这个就需要跟springcloud结合使用了,而且配置文件结构上稍微有点区别.但是我并不想这么用~
具体参考:Nacos Spring Cloud 快速开始
实例创建配置信息
创建配置信息
如上所示dataid是我们工程选择要用那个配置文件的主键,只有配置对了dataid 才能获取到对应的配置信息内容cuiyaonan2000@163.com
在 Nacos Spring Cloud 中,dataId
的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profiles.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}-----介个很重要一般我们测试工程没有区分测试,声场,开发的profile
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
代码中的使用跟我们常用的获取配置信息是一样的.如下1所示,2的注解表示会动态的获取最新的配置信息
- Nacos在配置路径
spring.cloud.nacos.config.extension-config
下,允许我们指定⼀个或多个额外配置。 - Nacos在配置路径
spring.cloud.nacos.config.shared-configs
下,允许我们指定⼀个或多个共享配置。
上述两类配置都⽀持三个属性:data-id
、group
(默认为字符串DEFAULT_GROUP
)、refresh
(默认为true
)。
- data-id : Data Id
- group:自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
- refresh: 控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。
注意:这里的Data ID
后面是加.yaml
后缀的,且不需要指定file-extension
。
namespace
区分环境:开发环境、测试环境、预发布环境、⽣产环境。group
区分不同应⽤:同⼀个环境内,不同应⽤的配置,通过group
来区分。
如果要在特定范围内(⽐如某个应⽤上)覆盖某个共享dataId上的特定属性,请使⽤ extension-config 来覆盖shared-configs
⽐如,其他应⽤的数据库url,都是⼀个固定的url,使⽤shared-configs.dataId = mysql
的共享配置。但其中有⼀个应⽤ddd-demo
是特例,需要为该应⽤配置扩展属性来覆盖。
spring:
application:
name: ddd-demo-service
cloud:
nacos:
config:
server-addr: nacos-2.nacos-headless.public.svc.cluster.local:8848
namespace: ygjpro-test2
group: ddd-demo
......
shared-configs[3]:
data-id: mysql.yaml
refresh: true
......
extension-configs[3]:
data-id: mysql.yaml
group: ddd-demo
refresh: true
优先级
主配置 > 扩展配置(extension-configs) > 共享配置(shared-configs)
-
同为扩展配置,存在如下优先级关系:
extension-configs[3] > extension-configs[2] > extension-configs[1] > extension-configs[0
。 -
同为共享配置,存在如下优先级关系:
shared-configs[3] > shared-configs[2] > shared-configs[1] > shared-configs[0]
。
spring:
application:
name: nacos-config-multi
main:
allow-bean-definition-overriding: true
cloud:
nacos:
username: ${nacos.username}
password: ${nacos.password}
config:
server-addr: ${nacos.server-addr}
namespace: ${nacos.namespace}
# 用于共享的配置文件
shared-configs:
- data-id: common-mysql.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
- data-id: common-redis.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
- data-id: common-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
# 常规配置文件
# 优先级大于 shared-configs,在 shared-configs 之后加载
extension-configs:
- data-id: nacos-config-advanced.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true
- data-id: nacos-config-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true