bootstrap.yml与application.yml的区别

  1. 善于观察的小伙伴能看到,为什么项目有的配置文件是bootstrap.yml,bootstrap.properties与application.yml。在springcloud分布式为服务中,作为配置中心来说启动顺序可以
  2. 被优先加载的,基础配置可以事先写在bootstrap.yml
  3. 比如:如下配置,要是写在nacos或者springcloud-config里面,@Value对应的值在配置中心里面,没有提前被加载出来的话,就会出现createBean  xxxx notdefiend,
    ${order.type.switch}不能被初始化的情况

     

  4. 加载顺序不同
    • bootstrap.yml(或bootstrap.properties)先于application.yml(或application.properties)加载。在 Spring Boot 应用启动时,bootstrap配置文件会首先被加载,它主要用于应用程序上下文的引导阶段。
    • 这个加载顺序很重要,因为它允许在bootstrap阶段设置一些基本的、全局的配置,这些配置对于后续application配置的正确加载可能是必要的。
  5. 应用场景不同
    • bootstrap.yml的应用场景
      • 配置中心相关配置:它通常用于从配置中心(如 Spring Cloud Config Server)加载配置。例如,当你的微服务需要从远程配置中心获取配置信息时,如配置中心的地址、应用名称、环境等信息可以在bootstrap.yml中设置。这样可以确保在应用启动的早期阶段就能够连接到配置中心,获取其他配置。
      • 加密 / 解密相关配置:如果配置文件中有加密的属性,bootstrap.yml可以配置用于解密的密钥信息等。例如,在 Spring Cloud 中,可以在bootstrap.yml中配置加密 / 解密的相关属性,使得应用能够正确解密在配置中心获取的加密配置。
    • application.yml的应用场景
      • 应用程序业务配置:主要用于定义应用自身的配置,如服务端口、数据库连接信息(如果不是通过配置中心获取)、日志级别等业务相关的配置。例如,一个 Spring Boot 微服务的application.yml可以配置server.port = 8080来指定服务监听的端口,以及spring.datasource.url等数据库连接相关配置。
  6. 覆盖规则不同
    • bootstrap.ymlapplication.yml中有相同的配置属性时,application.yml中的配置会覆盖bootstrap.yml中的配置。但这并不意味着bootstrap.yml中的配置就没有作用,因为它的加载顺序优先,可能已经在早期阶段对应用的启动环境等产生了影响。
 
 


posted @ 2024-12-27 21:56  余生请多指教ANT  阅读(137)  评论(0)    收藏  举报