背景
nacos配置文件每個(gè)服務(wù)都有一個(gè),而且在開發(fā)環(huán)境下每個(gè)nacos配置文件需要保持一致,并且每個(gè)服務(wù)打包時(shí)各個(gè)nacos配置文件需要互相獨(dú)立.
nacos配置文件在開發(fā)環(huán)境下經(jīng)常修改,每次每個(gè)nacos配置文件都要改一遍,還容易出錯(cuò)沖突, 需要有一個(gè)文件統(tǒng)一管理nacos的命名空間和開發(fā)環(huán)境
使用一個(gè)文件統(tǒng)一管理
- 使用
spring.profiles.include
并利用SpringBoot加載順序機(jī)制作nacos配置文件 結(jié)構(gòu)如下
+----------------------------------+
| 開發(fā)根目錄下: |
| bootstrap-framework.yml |
| (含spring.profiles.active, |
| spring.cloud.nacos.namespace) |
+----------------------------------+
|
|
↓
+------------------------------------+
| 服務(wù)內(nèi): | 由于SpringBoot的加載機(jī)制, 此文件在開發(fā)環(huán)境下相同字段會被上面的替代,不同的會和上面的互補(bǔ)
| bootstrap-framework.yml | !!但是在服務(wù)打包的時(shí)候生效
| (含spring.profiles.active, |
| spring.cloud.nacos.namespace) |
+------------------------------------+
|
|
↓
+-------------------------+
| 服務(wù)內(nèi): | 在此文件內(nèi)使用`spring.profiles.include='framework'`
| bootstrap.yml | 統(tǒng)一引入`spring.profiles.active`和`spring.cloud.nacos.namespace`
+-------------------------+
注意
在開發(fā)環(huán)境下,在根目錄下的bootstrap-frame.yml修改activate或namespace 會在所有服務(wù)都會生效
!! 但是,如果要將服務(wù)打包, 請?jiān)趯?yīng)服務(wù)內(nèi)的bootstrap-frame.yml文件修改activate或namespace, 此文件不會被打包進(jìn)去
總結(jié)
利用Spring.profiles.include
可以將不同的服務(wù)配置整合, 同時(shí)它也遵守SpringBoot配置文件的加載機(jī)制,
利用這個(gè)機(jī)制我們可以統(tǒng)一管理開發(fā)環(huán)境下的配置文件
SpringBoot 配置文件加載機(jī)制
Spring Boot從以下位置加載配置: 優(yōu)先級從高到低順序,高優(yōu)先級覆蓋低優(yōu)先級屎债,如有不同內(nèi)容蛮瞄,高優(yōu)先級和低優(yōu)先級形成互補(bǔ)配置
- 命令行參數(shù)
- 來自java:comp/env的JNDI屬性
- java系統(tǒng)屬性
(System.getProperties())
- 操作系統(tǒng)環(huán)境變量
- RandomValuePropertySource配置的
random.*
屬性值 - jar包外部的
application-{profile}.properties
或者application.yml(帶spring.profile)
配置文件 - jar包內(nèi)部的
application-{profile}.properties
或者application.yml(帶spring.profile)
配置文件 - jar包外部的
application.properties
或者application.yml(不帶spring.profile)
配置文件 - jar包內(nèi)部的
application.properties
或者application.yml(不帶spring.profile)
配置文件 -
@Configuration
注解類上的@PropertySource
- 通過
SpringApplication.setDefaultProperties
指定的默認(rèn)屬性