使用spring-cloud-alibaba-nacos-config配置中心:
maven依賴:
<!--配置中心客戶端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
配置示例:
server:
port: 9999
spring:
application:
name: @artifactId@ # 項目名稱
cloud:
nacos:
config:
server-addr: ${NACOS-HOST:localhost}:${NACOS-PORT:8848} # nacos-config地址, 多個地址逗號分開
file-extension: yml # 配置文件后綴
shared-dataids: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # 共享配置文件, 帶后綴, 多個逗號分隔
refreshable-dataids: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # 可刷新的共享配置文件, 多個逗號分隔, 默認都不刷新
group: group-test # 配置分組
namespace: ad741124-a08d-40af-b331-4a2fe0367c46 #租戶
ext-config[0]: # 拓展配置
data-id: ext-config-common01.properties # data-id
group: message-ext.properties # 配置組
refresh: true #是否可刷新
encode: UTF-8 # 默認UTF-8
name: @artifactId@
enabled: true
profiles:
active: @profiles.active@ # 環境
啟動原理, spring.factories配置啟動類(自定義springboot starter都會用到該配置, 默認路徑 /META-INF/spring.factories):
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.alibaba.cloud.nacos.NacosConfigAutoConfiguration,\
com.alibaba.cloud.nacos.endpoint.NacosConfigEndpointAutoConfiguration
org.springframework.boot.diagnostics.FailureAnalyzer=\
com.alibaba.cloud.nacos.diagnostics.analyzer.NacosConnectionFailureAnalyzer
1. com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration
該類使用@ConditionalOnProperty(name = "spring.cloud.nacos.config.enabled", matchIfMissing = true)注解控制配置中心的開啟和關閉, 主要負責加載配置
並且該類向spring容器注冊NacosConfigProperties(nacos配置中心相關的配置)和NacosPropertySourceLocator(nacos的配置探測器, 讀取配置屬性)
NacosPropertySourceLocator使用NacosPropertySourceBuilder.ConfigService加載配置的優先級, 本地 > http讀取nacos配置中心 > 快照
共享文件必須是 名稱 + 后綴, 不需要特殊處理即可直接讀取, 項目自定義的配置文件名稱拼接規則: 名稱 + 環境 + 后綴
加載配置總結:
配置加載順序: 共享配置 -> 擴展配置 -> 項目配置(包含兩個: 1. 項目名+后綴, 2. 項目名+環境+后綴)
配置使用優先級: 本地指定配置 > 配置中心 -> 本地快照
配置文件名優先級: NacosConfigProperties.prefix > NacosConfigProperties.name > spring.application.name
2. com.alibaba.cloud.nacos.NacosConfigAutoConfiguration
該類向容器注冊 NacosContextRefresher, 該類負責刷新配置
3. com.alibaba.cloud.nacos.endpoint.NacosConfigEndpointAutoConfiguration
該類注冊 NacosConfigEndpoint (actuator端點)和 NacosConfigHealthIndicator(健康檢查)