bootstrap.yml和application.yml的区别
1. 加载时机
bootstrap.yml:
在应用程序启动的非常早期阶段加载。
通常用于配置一些初始化阶段需要的属性,例如配置中心(如Spring Cloud Config)的连接信息。
适用于需要在应用程序主配置之前加载的配置。
application.yml:
在应用程序启动的稍后阶段加载。
用于配置应用程序的大部分常规属性。
适用于大多数应用程序配置。
2. 用途
bootstrap.yml:
用于配置与应用程序启动相关的全局属性。
常见用途包括:
配置Spring Cloud Config Server(比如我们使用Nacos作为配置中心,就必须使用这种)的连接信息。
配置加密/解密密钥。
配置服务名。
配置环境变量。
这些配置通常在应用程序启动前需要加载,以便后续的配置可以使用这些属性。
application.yml:
用于配置应用程序的具体业务逻辑和运行时属性。
常见用途包括:
配置数据源。
配置数据库ORM如mybatis-plus
配置swagger信息
配置Redis、RabbitMQ等中间件。
配置日志级别。
配置Spring Boot的内置服务器(如Tomcat)。
这些配置在应用程序启动后生效,用于控制应用程序的行为。
bootstrap.yml 用来定义系统级别的,用于配置应用程序启动前需要加载的全局属性,特别是与配置中心(注册中心)相关的属性。
application.yml 用来定义应用级别的,用于配置应用程序的具体业务逻辑和运行时属性。
简单来说,如果我们是微服务项目,并且使用一些外部的配置中心(注册中心)如Nacos,那么我们就应该使用bootstrap.yml。bootstrap.yaml中通常只写nacos的连接信息。application.yml可以放到nacos里,修改时方便热部署。bootstrap加载时机在application之前,但是注意默认情况下bootstrap的优先级高,不会被覆盖。
但是当在加上overrideNone=true时,那么applicaiton.yml的优先级就会高于bootstrap
spring.cloud.config.overrideNone=true 覆盖任何本地属性
spring.cloud.config.overrideSystemProperties=false 仅仅系统属性和环境变量
注意如果是k8s部署的,还会有一层yml配置,k8s里的配置优先级最高,即下图中的configfile


浙公网安备 33010602011771号