springboot中spring.profiles.include的妙用

springboot中spring.profiles.include的妙用。

 

我们有这样的一个springboot项目。项目分为开发、测试、生产三个不同阶段(环境),每个阶段都会有db、ftp、redis等的不同配置信息。我们可以使用spring.profiles.include来实现三种不同环境的一键切换。

 

项目总(入口)配置文件:

bootstrap.yml  ,内容如下

spring.profiles.active:  dev  #dev、test、prod 三种配置可以在这里进行一键切换,默认激活 dev(开发)环境配置

  

项目开发环境配置文件:

application-dev.yml (开发环境入口配置)、application-devDb.yml 、application-devFtp.yml、application-devRedis.yml 

application-dev.yml 中含有如下内容

spring.profiles.include: devDb,devFtp,devRedis

 

项目测试环境配置文件:

application-test.yml (测试环境入口配置)、application-testDb.yml 、application-testFtp.yml、application-testRedis.yml 

 

application-test.yml 中含有如下内容

spring.profiles.include: testDb,testFtp,testRedis

 

项目生产环境配置文件:

application-prod.yml (生产环境入口配置)、application-prodDb.yml 、application-prodFtp.yml、application-prodRedis.yml 

application-prod.yml 中含有如下内容

spring.profiles.include: prodDb,prodFtp,prodRedis

 

spring.profiles.include 的作用是可以叠加激活新的profile ,这样可以在总的项目配置(bootstrap.yml)中实现一键切换dev、test、prod三者不同环境, 即 

切换为dev时,同时激活了dev、devDb、devFtp、devRedis 的profile

切换为test时,同时激活了test、testDb、testFtp、testRedis 的profile

切换为prod时,同时激活了prod、prodDb、prodFtp、prodRedis 的profile

 

 

另外: 在yml配置文件中配置List<String> 的值,可以采用  -子项 的方式,如 :

spring.profiles.include:

  - 子项1

  - 子项2

  - 子项3   

 

也可以采用 逗号分隔元素列表的方式,如: 

spring.profiles.include: 子项1,子项2,子项3    

 

### Spring Boot 中 `spring.profiles` 的配置位置和用法 在 Spring Boot 中,`spring.profiles` 主要用于多环境配置管理。它通过激活特定的 Profile 来加载对应的配置文件或属性。以下是关于 `spring.profiles` 的详细说明: --- #### 1. 配置位置 `spring.profiles.active` 和 `spring.profiles.include` 是 Spring Boot 中用于指定活动 Profile 和附加 Profile 的关键属性。 - **主配置文件**:通常在 `application.yml` 或 `application.properties` 文件中定义。 ```yaml spring: profiles: active: dev # 激活开发环境[^5] include: common # 包含通用配置[^5] ``` - **命令行参数**:可以通过命令行参数动态指定活动 Profile。 ```bash java -jar app.jar --spring.profiles.active=prod ``` - **环境变量**:支持通过环境变量设置活动 Profile。 ```bash export SPRING_PROFILES_ACTIVE=dev ``` - **Maven 配置**:可以在 `pom.xml` 中预定义活动 Profile。 ```xml <profiles> <profile> <id>dev</id> <properties> <spring.profiles.active>dev</spring.profiles.active> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>prd</id> <properties> <spring.profiles.active>prd</spring.profiles.active> </properties> </profile> </profiles> ``` --- #### 2. 使用方法 `spring.profiles` 的使用主要涉及两个核心属性:`spring.profiles.active` 和 `spring.profiles.include`。 - **`spring.profiles.active`**:用于指定当前应用运行时激活的 Profile。 - 示例:激活开发环境。 ```yaml spring: profiles: active: dev ``` - **`spring.profiles.include`**:用于在激活的 Profile 基础上附加其他 Profile。 - 示例:激活开发环境并附加通用配置。 ```yaml spring: profiles: active: dev include: common ``` - **Profile 特定配置文件**:Spring Boot 支持按命名约定加载特定 Profile 的配置文件。 - 文件命名规则:`application-{profile}.yml` 或 `application-{profile}.properties`。 - 示例: - 开发环境:`application-dev.yml` - 测试环境:`application-test.yml` - 生产环境:`application-prod.yml` --- #### 3. 加载顺序 Spring Boot 在加载配置时遵循以下优先级顺序: 1. 命令行参数。 2. 环境变量。 3. 主配置文件中的 `spring.profiles.active` 属性。 4. Profile 特定配置文件(如 `application-dev.yml`)。 5. 默认配置文件(`application.yml` 或 `application.properties`)。 通过这种机制,可以灵活地覆盖默认配置以适配不同环境的需求[^3]。 --- #### 4. 动态切换 Profile 除了在配置文件中静态定义外,还可以通过以下方式动态切换 Profile: - **命令行参数**:如前所述,通过 `--spring.profiles.active` 参数指定。 - **代码中动态设置**:在应用程序启动时通过编程方式设置。 ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { System.setProperty("spring.profiles.active", "test"); // 动态设置Profile SpringApplication.run(DemoApplication.class, args); } } ``` --- #### 5. 示例代码 以下是一个完整的示例,展示如何使用 `spring.profiles` 管理多环境配置。 - **主配置文件**:`application.yml` ```yaml spring: profiles: active: dev include: common ``` - **开发环境配置**:`application-dev.yml` ```yaml server: port: 8080 ``` - **通用配置**:`application-common.yml` ```yaml app: name: MyApplication ``` - **生产环境配置**:`application-prod.yml` ```yaml server: port: 8081 ``` --- ###
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值