spring.profiles.active配置的作用
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=?
是用来指定要激活的配置名称。