💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 1. nacos概念 ## **1.1 dataID:相当于配置文件名称,用于标识一个配置文件** 在Nacos-Server中新建配置,其中Data ID它的定义规则是:`${prefix}-${spring.profile.active}.${file-extension}` * prefix 默认为`spring.application.name`的值,也可以通过配置项`spring.cloud.nacos.config.prefix`来配置。 * spring.profile.active 即为当前环境对应的`profile`,可以通过配置项`spring.profile.active`来配置。 * file-exetension 为配置内容的数据格式,可以通过配置项`spring.cloud.nacos.config.file-extension`来配置。目前只支持`properties`和`yaml`类型。 ## 1.2 Group 和名称空间 namespace和group组合可用来对配置文件进行隔离,例如对不同项目,不同租户或者不同环境 ### 方案1主要说明一下面向一个租户 从一个租户(用户)的角度来看,如果有多套不同的环境,那么这个时候可以根据指定的环境来创建不同的 namespce,以此来实现多环境的隔离。 例如,你可能有dev,test和prod三个不同的环境,那么使用一套 nacos 集群可以分别建以下三个不同的 namespace。如下图所示: ![](https://img.kancloud.cn/a4/81/a4815538abee053b289e491cb674d26b_644x304.png) 从某一实体出发由 namespace->group-activefile进行隔离,但是在实际开发中,通常都是环境自己配置自己的nacos # 2. provider整合nacos config ## 2.1 在nacos添加配置文件 **当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}**,下面添加provider-dev.yml配置文件 ![](https://img.kancloud.cn/b2/29/b2299d7481d79fabd43b45ff21b42ebf_706x525.png) ## 2.2 导入config配置依赖 ~~~ <!--服务配置--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ~~~ ## 2.3 配置config 配置`bootstrap.yml`,注意是bootstrap.xxx,而不是`application`或者其他。原因如下 > Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application ~~~ ## Spring spring: application: # 应用名称 name: provider profiles: # 环境配置 active: dev cloud: nacos: config: # 配置中心地址 server-addr: 192.168.56.10:8848 # 配置文件格式 file-extension: yml ~~~ ## 2.4 配置controller `@RefreshScope`用于配置动态刷新 `@Value("${nacos.config}")`用于读取配置文件 ~~~ @RestController @RequestMapping("/test") @RefreshScope public class TestController { @Value("${nacos.config}") private String config; @GetMapping("/config") public String getConfig() { return config + " - provider"; } @GetMapping("") public String say() { return "hello cloud - provider"; } } ~~~ 测试: ![](https://img.kancloud.cn/10/64/10641a73600e3e5821c3f77f94199967_586x169.png) ## 2.5 使用group和namespace 1. 新加一个名称空间dev ![](https://img.kancloud.cn/98/51/98515f64f4363c4495c7ff109e286b3b_1145x392.png) 2. 配置 ~~~ spring: application: # 应用名称 name: provider profiles: # 环境配置 active: dev cloud: nacos: config: # 配置中心地址 server-addr: 192.168.56.10:8848 # 配置文件格式 file-extension: yml group: DEFAULT_GROUP namespace: 1b2b82fd-96d4-4c10-ac42-80264b0cc2a4 ~~~ * group: DEFAULT_GROUP ,使用默认组 * namespace: 1b2b82fd-96d4-4c10-ac42-80264b0cc2a4,dev对应的id ## 2.6 自动刷新的两种方式 ### 2.6.1 @RefreshScope配置自动刷新 # 3. 加载多配置文件 应用的配置文件肯定不止一个,nacos配置中心支持应用的多配置 # 4. 共享配置文件 项目中,又许多配置是重复的,就可以用共享的方式进行优化