配置概述
nacos的配置分为两个部分,一个是服务配置:spring.cloud.nacos.config.xxxxx,一个是服务发现:spring.cloud.nacos.discovery.xxxxx。两者相互分离,我们可以只使用其中一个或两个功能。
一些公共的配置也可以配置在spring.cloud.nacos.xxxx中。
如:服务配置和服务发现的用户密码相同时:
spring.cloud.nacos.config.username=
spring.cloud.nacos.config.password=
spring.cloud.nacos.discovery.usernamer=
spring.cloud.nacos.discovery..password=
可以简略为:
spring.cloud.nacos.username=
spring.cloud.nacos.password=
在 Nacos Spring Cloud 中,dataId 的完整格式如下:${prefix}-${spring.profile.active}.${file-extension}
prefix:默认是spring.application.name的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profile.active对应的值。
file-extension是文件后缀名。
所以我们在使用nacos作为配置中心时,需要按照要求创建文件。
配置项
# 不使用nacos的配置中心配置 使用本地配置
spring.cloud.nacos.config.enabled=false
# 不把自己注册到注册中心的地址
spring.cloud.nacos.discovery.register-enabled=false#配置中心不覆盖本地配置和系统参数配置
spring.cloud.config.override-none= true
spring.cloud.config.override-system-properties=false
#默认情况下,从Spring Cloud Config中加载的配置项,是不能被本地的配置项覆盖的,如果想要覆盖这些配置项,需要在配置中心的配置文件中(或者系统配置项、命令行配置项中等)添加以下配置项(注意本地配置文件中增加该配置无任何意义)
spring.cloud.config.allow-override=true
# nacos不使用动态刷新配置(默认是动态刷新配置值)需要重启应用才生效
spring.cloud.nacos.config.refresh.refresh.enabled= false
配置依赖
在springboot中分别需要引入以下两个依赖:
服务配置:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
服务依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
SpringCloud Config使用
Spring Cloud中配置文件的加载机制与其它的Spring Boot应用存在不一样的地方;如它引入了bootstrap.properties的配置文件,同时也支持从配置中心中加载配置文件等;本文主要聚焦在这些配置文件加载的优先级及覆盖关系的控制上,对于帮助理解Spring Cloud的配置文件加载方式有一定的帮助。
Spring Cloud启动的时候会创建一个bootstrap的上下文,它是应用的父级上下文(请注意这里所说的bootstrap指的是是启动最开始时加载的配置项,与bootstrap.yml或者说bootstrap.properties是两码事,这点很容易混淆);它负责从一些外部环境中加载配置项,如配置中心;这部分配置项的优先级是最高的,因此它不会被其它的配置文件中加载的配置项给覆盖。
bootstrap的上下文使用另外一种机制来加载额外的配置文件,相对于从application.properties(或者yml)中加载配置文件中加载配置项,你也可以选择从bootstrap.properties(yml)中加载,以区分boostrap上下文中加载的配置项和主上下文加载的配置项。
springboot中使用nacos作为配置中心,项目启动时会先从bootstrap.yml中获取nacos的配置信息,如果没有bootstrap.yml文件或者文件中nacos的配置信息,则会使用系统默认的下给你管信息去获取配置文件。所以我们在没有bootstrap.yml文件或者文件中nacos的配置信息的情况下启动,会看到项目一开始报错,就是在使用默认配置信息获取配置项,但是这个不影响。可参考:NacosPropertySourceLocator代码。
可以在系统配置项或者启动命令参数中指定不使用bootstrap机制加载配置项:
spring.cloud.bootstrap.enabled=false