java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot中application.yml和bootstrap.yml文件区别

SpringBoot项目中application.yml和bootstrap.yml文件的区别及说明

作者:冰糖心书房

`application.yml`和`bootstrap.yml`都是Spring Boot项目中的配置文件,但它们在加载时机、用途、优先级、配置来源、适用场景和是否必须存在等方面存在区别

application.yml和bootstrap.yml文件的区别

application.ymlbootstrap.yml 文件都是 Spring Boot 项目中用于配置应用程序的 YAML 或 Properties 文件,但它们在加载顺序、用途和优先级上存在关键的区别。

核心区别概览:

特性bootstrap.yml / bootstrap.propertiesapplication.yml / application.properties
加载时机更早 (Bootstrap Context)较晚 (Application Context)
用途引导引导 (Bootstrapping), 外部化配置应用程序通用配置
上下文Bootstrap ContextApplication Context
优先级更高 (在 Bootstrap Context 中)较低 (在 Application Context 中)
配置来源外部配置 (Config Server, Nacos, etc.)应用自身配置 (本地文件, 命令行, 环境变量)
适用场景配置中心连接、共享配置、应用名、Profile应用通用配置、Bean 定义、业务逻辑配置
配置覆盖application.yml 覆盖 bootstrap.yml命令行参数、环境变量等覆盖 application.yml
默认位置src/main/resources/src/main/resources/
是否必须存在可选可选 (但通常存在)

详细解释和区别:

1. 加载时机 (Loading Order)

理解 Bootstrap Context 和 Application Context:

你可以将 Bootstrap Context 理解为 Spring Boot 启动的引导阶段,它负责初始化一些基础且关键的配置,例如:

Application Context 则是 Spring Boot 应用的主应用上下文,负责加载和管理应用程序中的所有 Bean、处理请求、执行业务逻辑等。 application.yml 主要用于配置应用程序自身的通用设置。

2. 用途 (Purpose)

bootstrap.yml / bootstrap.properties: 引导引导 (Bootstrapping) 和 外部化配置:

application.yml / application.properties: 应用程序通用配置:

3. 上下文 (Context)

这意味着 bootstrap.yml 中的配置主要作用于 Bootstrap Context,而 application.yml 中的配置作用于 Application Context。 Bootstrap Context 的配置会影响 Application Context 的创建和初始化。

4. 优先级 (Priority)

5. 配置来源 (Configuration Sources)

6. 适用场景 (Use Cases)

bootstrap.yml / bootstrap.properties: 适用于:

application.yml / application.properties: 适用于:

7. 配置覆盖 (Configuration Overriding)

application.yml 中的配置会覆盖 bootstrap.yml相同属性的配置。 这是因为 application.ymlbootstrap.yml 之后加载。

命令行参数、环境变量等 可以进一步覆盖 application.ymlbootstrap.yml 中的配置。 Spring Boot 的配置优先级顺序是:

  1. 命令行参数
  2. 环境变量
  3. application.yml / application.properties (profile-specific 和 default)
  4. bootstrap.yml / bootstrap.properties (profile-specific 和 default)
  5. 默认配置 (Spring Boot 框架内部的默认值)

8. 默认位置 (Default Location)

9. 是否必须存在 (Required or Optional)

总结

简单记忆口诀:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文