10秒搞懂bootstrap.yml和application.yml的区别

169 阅读2分钟

总结

application.propertiesapplication.yml 是一样的,只是application.yml更方便一点;类似于硬币10元和纸币10元,纸币更好拿。 bootstrap.yml和application.yml加载时机不同,仅此而已。


一、.properties和.yml(.yaml)

这两种是配置常用的配置文件格式的区别,我们创建一个springboot应用,默认的resources下的配置文件为 application.properties,配置redis格式一般如下

# Redis单机配置 spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=your_password spring.redis.database=0

如果我们改成application.yml格式呢,那上面的配置就会编成如下格式

spring: redis: host: localhost port: 6379 password: your_password database: 0

显然.yml格式一幕了然,推荐使用.yml格式

二、bootstrap.yml和application.yml的区别

1. 加载时机

bootstrap.yml:

  • 在应用程序启动的非常早期阶段加载。
  • 通常用于配置一些初始化阶段需要的属性,例如配置中心(如Spring Cloud Config)的连接信息。
  • 适用于需要在应用程序主配置之前加载的配置。

application.yml:

  • 在应用程序启动的稍后阶段加载。
  • 用于配置应用程序的大部分常规属性。
  • 适用于大多数应用程序配置。

2. 用途

bootstrap.yml:

  • 用于配置与应用程序启动相关的全局属性。

  • 常见用途包括:

    • 配置Spring Cloud Config Server(比如我们使用Nacos作为配置中心,就必须使用这种)的连接信息。
    • 配置加密/解密密钥。
    • 配置环境变量。
  • 这些配置通常在应用程序启动前需要加载,以便后续的配置可以使用这些属性。

application.yml:

  • 用于配置应用程序的具体业务逻辑和运行时属性。

  • 常见用途包括:

    • 配置数据源。
    • 配置Redis、RabbitMQ等中间件。
    • 配置日志级别。
    • 配置Spring Boot的内置服务器(如Tomcat)。
  • 这些配置在应用程序启动后生效,用于控制应用程序的行为。

bootstrap.yml 用于配置应用程序启动前需要加载的全局属性,特别是与配置中心相关的属性。

application.yml 用于配置应用程序的具体业务逻辑和运行时属性。

简单来说,如果我们是微服务项目,并且使用一些外部的配置中心如Nacos,那么我们就应该使用bootstrap.yml。bootstrap.yaml中通常只写nacos的连接信息

server: port: 8080 spring: application: name: gateway-module profiles: # 环境配置 active: dev cloud: nacos: discovery: username: nacos password: nacos namespace: microservice-project server-addr: localhost:8848 config: file-extension: yml username: nacos password: nacos namespace: microservice-project server-addr: localhost:8848 group: DEFAULT_GROUP import-check: enabled: false # 共享配置 shared-configs: - share-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

其他配置都写在了nacos中了

而如果我们是spring boot应用,并且没有使用Nacos作为配置中心,那你所有的配置都可以写在application.yml中,如使用了Nacos,则方式如上。