- 首先需要在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-service profiles: #开发环境,这里是dev,也就是说明是开发环境 active: dev cloud: nacos: # Nacos Server 启动监听的ip地址和端口 server-addr: 192.168.xxx.xxx:8848 config: # 文件后缀名 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
-