1.?spring.profiles
?(或文件名中的??
):定義配置的名稱
這是聲明一段配置屬于哪個 Profile。
在同一個?
application.yml
?中:使用?spring.profiles
?鍵來為一個配置段打上標簽。yaml
spring:profiles: dev # 【定義】這個配置段的名稱是‘dev’ server:port: 9090
在獨立的配置文件中:通過文件命名規則?
application-{profile}.yml
?來定義。文件?
application-prod.yml
?-> 【定義】這個文件里的所有配置都屬于?prod
?Profile。文件?
application-database.yml
?-> 【定義】這個文件里的所有配置都屬于?database
?Profile。
關鍵:?這只是在“準備”配置,它們此時并不會自動生效。
2.?spring.profiles.active
:激活指定的配置名稱
這是命令Spring去加載并使用那些已被定義的配置。
作用:告訴Spring Boot:“請去找到所有名為?
[值]
?的配置(無論是在主文件里的段還是獨立文件),并把它們激活,與默認配置合并。”示例:
spring.profiles.active=dev
?-> 【激活】所有定義名為?dev
?的配置。spring.profiles.active=prod,database
?-> 【激活】所有定義名為?prod
?和?database
?的配置(可以同時激活多個,用逗分隔)。
工作流程類比
您可以把它想象成一個電視臺和電視遙控器:
電視臺 (
spring.profiles
?/ 文件名):各個電視臺(如CCTV-1, CCTV-5)一直在播放不同的節目(不同的配置)。
它們定義了自己是誰(
spring.profiles: cctv1
)。
遙控器 (
spring.profiles.active
):你手里的遙控器決定激活哪個電視臺的信號到你的電視機上。
你按下“CCTV-5”(
spring.profiles.active=cctv5
),你的電視就播放CCTV-5的節目。
默認頻道 (
application.yml
):即使你不按遙控器,電視也有一個默認頻道(默認配置)在播放。
總結對比表
特性 | 配置項/文件 | 作用 | 類比 |
---|---|---|---|
定義/聲明 | spring.profiles ?(在YAML段中) | 聲明這段配置屬于哪個Profile | 電視臺的臺標和頻道 |
application-{profile}.yml ?(文件名) | 聲明這個文件里的配置屬于哪個Profile | ||
激活/使用 | spring.profiles.active | 命令Spring去啟用哪些已定義的Profile | 電視遙控器 |
所以,您的兩句話完美地概括了整個過程:
spring.profiles=?
?是用來定義當前配置的名稱。spring.profiles.active=?
?是用來指定要激活的配置名稱。