Skip to content

bootstrap与application的区别

bootstrap.properties(或 bootstrap.yml)与 application.properties(或 application.yml)是 Spring Boot 应用程序中用于配置的两种不同类型的配置文件,它们在加载顺序、使用场景和功能上有所区别。

加载顺序

  • bootstrap:在应用程序上下文创建之前加载。这意味着它可以用来配置如何初始化应用程序上下文。
  • application:在应用程序上下文创建之后加载,并且可以被 Spring Boot 的自动配置机制所使用。

使用场景

  • bootstrap

    • 主要用于微服务架构中的某些特定场景,例如从外部配置中心(如 Spring Cloud Config Server)加载配置。
    • 它适用于那些需要在应用程序启动之前就进行设置的配置项,比如配置服务器的地址、加密密钥等。
    • 如果你不需要这些高级特性,通常不会用到 bootstrap.properties 文件。
  • application

    • 是最常用的配置文件,用于定义应用程序级别的配置属性,如数据库连接信息、服务器端口、日志级别等。
    • 支持基于环境的配置文件(例如 application-dev.yml, application-prod.yml),允许为不同的运行环境指定不同的配置。
    • 适用于大多数常规的应用程序配置需求。

功能差异

  • bootstrap

    • 配置项一旦加载就不能被覆盖,除非通过命令行参数或环境变量。
    • 可以包含敏感信息(如加密密钥),因为这些信息可能需要在应用程序上下文初始化前就可用。
    • 在某些情况下,它还可以用来配置一些早期绑定的组件,如远程配置源。
  • application

    • 允许在运行时动态地调整配置(例如通过 JMX 或者 Spring Cloud Bus 来刷新配置)。
    • 更加灵活,支持多种方式来覆盖配置值(如命令行参数、环境变量、系统属性等)。
    • 适合大多数应用层面的配置需求。

总结来说,bootstrap.properties 适用于更早阶段的配置,特别是在微服务环境中与配置管理服务交互时。而 application.properties 则是更为常见和广泛使用的配置文件,适用于绝大多数的应用程序配置需求。如果你的应用程序不涉及复杂的配置管理或云原生特性,那么很可能只需要使用 application.properties 或其 YAML 格式版本即可。