Nacos的配置中心
我们废话不多说。
首先引入依赖:
<!-- nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
然后在配置文件中进行配置
spring: cloud: nacos: discovery: server-addr: 47.121.25.148:8848 config: import-check: enabled: false server-addr: 47.121.25.148:8848 file-extension: yaml enabled: true refresh-enabled: true group: DEFAULT_GROUP config: import: # - optional:nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension} - optional:nacos:auth-service.yml
配置项 | 说明 |
---|---|
enabled: true | 是否启用 Nacos 配置中心功能。 |
server-addr: 127.0.0.1:8848 | 指定 Nacos 的服务地址。 |
file-extension: yaml | 指定 Nacos 配置文件的后缀名,默认会拼接为 dataId = ${spring.application.name}.yaml 。 |
refresh-enabled: true | 是否启用 Nacos 的动态刷新功能(使 @RefreshScope 生效)。 |
group: DEFAULT_GROUP | 指定 Nacos 配置的分组名称。 |
import-check.enabled: false | 当使用 spring.config.import=nacos: 语法时,是否检查配置项是否存在。设为 false 表示不做校验。 |
咱们首先要文件名字要相同,如果不行, file-extension: yaml
类型也改成相同。
在开启了 refresh-enabled: true
之后,如果你要动态刷新配置文件,需要加上 @RefreshScope
标签,哪个bean用到了 配置文件中的属性,就要加上这个标签。
我最开始以为是加在启动类上的,结果没用,后来才发现哪里用到了就加在哪里。
配置项 | 用途 | 常用于 | 支持方式 | 是否适合 Nacos |
---|---|---|---|---|
optional:nacos:xxx.yaml | 指定从 Nacos 加载配置文件 | 普通微服务场景 | Spring Cloud Alibaba Nacos | ✅ 是 |
configtree: | 从目录中按文件加载配置项 | K8s Secret / ConfigMap | Spring Boot 原生 | ⛔ 不适合 Nacos |
configserver: | 从 Spring Cloud Config Server 拉配置 | Git 配置中心 | Spring Cloud Config | ⛔ 不适合 Nacos |
如果Nacos中的配置和后端的配置有重复的,应该哪一个配置生效呢?
默认情况下,Nacos 中的配置优先级高,会覆盖本地配置(application.yml
)中的同名项。
对于数据隔离,也就是如果我们有多套开发环境,那nacos配置中心也得对应多套开发环境,这里我们就用到了 namespace
命名空间,每一个命名空间就对应一套开发环境,我们只需要在后端配置文件中,为每一个开发环境配置好命名空间即可。
同时,可能配置文件属于不同的分组怎么办?
config: import: # - optional:nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension} # 在文件后面紧跟着 ?group=组名 即可 - optional:nacos:auth-service.yml?group=DEFAULT_GROUP