配置文件bootstrap和application的区别

Bootstrap和Application的区别可以从多个维度来探讨,但这里主要关注它们在Spring Boot及Spring Cloud环境下的配置和应用场景。


配置文件加载顺序与优先级

在Spring Boot和Spring Cloud项目中,bootstrap和application是两种不同类型的配置文件,它们的加载顺序和优先级有所不同:

  • 加载顺序:bootstrap配置文件比application配置文件优先加载。这是因为bootstrap是由Spring的父上下文(Parent ApplicationContext)加载的,而application则是由子上下文(Child ApplicationContext)加载的。具体来说,加载顺序为:bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml。
  • 优先级:bootstrap加载的配置信息默认不能被application中的相同配置覆盖。如果两个配置文件同时存在,bootstrap的配置信息将优先被应用。这一特性使得bootstrap配置文件适合用于配置一些固定的、不能被覆盖的属性,以及需要加密/解密的场景。

应用场景

  • bootstrap

    • 主要用于从额外的资源(如外部配置中心)加载配置信息。
    • 当使用Spring Cloud Config配置中心时,需要在bootstrap配置文件中添加连接到配置中心的配置属性,以便加载外部配置中心的配置信息。
    • 适用于配置一些系统级别的参数,这些参数通常不应被本地配置文件覆盖。
  • application

    • 常用于Spring Boot项目的自动化配置。
    • 主要用于应用级别的参数配置,这些配置通常针对特定应用,且可能需要根据不同环境(开发、测试、生产)进行调整。
    • 在大部分情况下,如果只使用Spring Boot而不涉及Spring Cloud的高级特性,使用application配置文件即可满足需求。

总结

bootstrap和application是两种不同优先级和用途的配置文件。bootstrap优先加载且优先级更高,主要用于从外部资源加载配置信息;而application则用于应用级别的自动化配置。