- 首先需要在maven的pom文件中引入nacos-config依赖
-
<!--nacos配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
-
- 在项目中添加bootstrap.yml 配置文件,配置服务的信息
-
spring:application:# 服务名称name: nacos-order-serviceprofiles:#开发环境,这里是dev,也就是说明是开发环境active: devcloud:nacos:# Nacos Server 启动监听的ip地址和端口server-addr: 192.168.xxx.xxx:8848config:# 文件后缀名file-extension: yaml# nacos开启鉴权之后的用户名username: nacos# nacos开启鉴权之后的用户登录密码password: nacos
- 配置文件中的加载顺序原理,可以参考官方文档信息
- Spring Boot Reference Documentation
- Cloud Native Applications
-
- 在项目的Controller中添加读取nacos上远程配置的自己设定的版本信息
-
@Value("${my.version}")private String version;/*** 读取远程配置中的版本信息** @return 版本信息*/@GetMapping("/version")public ResultBean<String> version() {return ResultBean.success(version);}
-
- 在nacos在管理配置中添加配置文件,文件命名为bootstrap.yml中设定的值相组成,结构为:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension},即当前示例为:nacos-order-service-dev.yaml
- 项目的核心配置,需要进行热更新的配置才要放到nacos管理的必要。基本不会变更的一些配置建议还是保存在微服务本地比较好
- 启动服务,进行页面访问
- 微服务首先拉取nacos中管理的配置,然后将会与本地的application.yml配置进行合并,同时bootstrap.yml文件会在application.yml之前被读取。默认情况下bootstrap配置文件中的nacos远程服务的相关的配置是不会被application配置文件覆盖(包含本地配置),简单的说就是如果nacos中的key和本地文件中的key是一样的,那么其相同的key的值默认还是读取远程nacos的配置key的值执行,nacos中的值优先级较高。如果需要将相同key的值以本地配置覆盖远程配置时,必须要在nacos的远程配置文件中添加如下配置信息,即可实现本地覆盖远程的配置
-
spring:cloud:config:# 远程配置允许本地进行覆盖,必须在nacos的远程授予权限,在本地配置文件配置中不会生效allow-override: true# 从任何本地配置源都可以进行覆盖override-none: true
-