初入新公司发现公司的配置文件bootstrap.yml跟我之前看见的application.yml不一样,特意看了一下学习了一下,在这里记录一下

SpringBoot 配置文件解析
本文介绍了 SpringBoot 框架中两种配置文件的作用及加载优先级:bootstrap.yml 和 application.yml。bootstrap.yml 通常用于设置类似系统参数级别的配置,并且其加载优先级高于 application.yml。默认情况下,bootstrap.yml 中的配置不会被其他配置文件覆盖。

springboot框架的上下文有两种,一种是bootstrap.yml,另一种就是application.yml。
前者优先级高于后者,也就是说,如果bootstrap.yml和application.yml出现在同一目录下,会先加载 bootstrap.yml,后加载application.yml。
bootstrap.yml多用于设置一些类似系统参数级别的配置,默认情况下不会被其他配置覆盖。

Spring Boot 项目中,配置文件的加载顺序和覆盖规则是理解应用配置行为的关键。Spring Boot 支持多种配置文件格式,包括 `application.yml` 和 `bootstrap.yml` 系列文件。这些文件的加载顺序和优先级决定了哪些配置会被实际应用。 ### 配置文件的加载顺序和优先级 #### 1. **`bootstrap.yml` 系列文件** `bootstrap.yml` 是 Spring Boot 应用在启动早期阶段加载的配置文件,通常用于配置 Spring Cloud 相关的内容,例如服务发现、配置中心等。它的加载优先级高于 `application.yml` 系列文件。`bootstrap.yml` 系列文件的加载顺序如下: - `bootstrap.yml` - `bootstrap-{profile}.yml`(例如 `bootstrap-uat.yml`) `bootstrap.yml` 是基础配置文件,而 `bootstrap-{profile}.yml` 是根据激活的 `profile` 加载的特定配置文件。如果两者同时存在,`bootstrap-{profile}.yml` 的配置会覆盖 `bootstrap.yml` 中的相同配置。 #### 2. **`application.yml` 系列文件** `application.yml` 是 Spring Boot 应用的主要配置文件,用于配置应用级别的属性。它的加载顺序在 `bootstrap.yml` 系列文件之后。`application.yml` 系列文件的加载顺序如下: - `application.yml` - `application-{profile}.yml`(例如 `application-uat.yml`) 与 `bootstrap.yml` 系列文件类似,`application.yml` 是基础配置文件,而 `application-{profile}.yml` 是根据激活的 `profile` 加载的特定配置文件。如果两者同时存在,`application-{profile}.yml` 的配置会覆盖 `application.yml` 中的相同配置。 ### 配置文件的覆盖规则 在 Spring Boot 中,配置文件的覆盖规则遵循以下原则: 1. **后加载的文件会覆盖先加载的文件** 例如,如果 `application-uat.yml` 和 `application.yml` 中都定义了相同的属性,`application-uat.yml` 的属性值会被应用。 2. **`bootstrap.yml` 系列文件优先于 `application.yml` 系列文件** 由于 `bootstrap.yml` 系列文件在应用启动早期加载,它们的配置优先级高于 `application.yml` 系列文件。例如,如果 `bootstrap.yml` 和 `application.yml` 中都定义了相同的属性,`bootstrap.yml` 的属性值会被应用。 3. **特定 `profile` 的文件优先于基础文件** 无论是 `bootstrap.yml` 还是 `application.yml`,特定 `profile` 的文件(如 `bootstrap-uat.yml` 或 `application-uat.yml`)会覆盖基础文件(如 `bootstrap.yml` 或 `application.yml`)中的相同配置。 ### 示例:配置文件加载顺序和覆盖规则 假设项目中有以下配置文件: - `bootstrap.yml` - `bootstrap-uat.yml` - `application.yml` - `application-uat.yml` #### 加载顺序 1. `bootstrap.yml` 2. `bootstrap-uat.yml` 3. `application.yml` 4. `application-uat.yml` #### 覆盖规则 - `bootstrap-uat.yml` 中的配置会覆盖 `bootstrap.yml` 中的相同配置。 - `application-uat.yml` 中的配置会覆盖 `application.yml` 中的相同配置。 - `application.yml` 中的配置会覆盖 `bootstrap-uat.yml` 中的相同配置。 - `application-uat.yml` 中的配置会覆盖所有其他文件中的相同配置。 ### 示例代码:配置文件内容 以下是一个简单的示例,展示配置文件中可能的配置内容: `bootstrap.yml`: ```yaml spring: cloud: config: uri: http://config-server ``` `bootstrap-uat.yml`: ```yaml spring: cloud: config: uri: http://uat-config-server ``` `application.yml`: ```yaml server: port: 8080 ``` `application-uat.yml`: ```yaml server: port: 9090 ``` #### 应用启动时的配置结果 - `spring.cloud.config.uri` 的值为 `http://uat-config-server`(来自 `bootstrap-uat.yml`)。 - `server.port` 的值为 `9090`(来自 `application-uat.yml`)。 ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值