application.yml 和 bootstrap.yml

在 Spring Boot 中,application.ymlbootstrap.yml 都是用来配置应用程序的属性文件,通常用于环境配置、服务配置等。但是,它们有一些不同的用途和加载顺序。以下是它们之间的主要区别:

1. application.yml

  • 主要作用:这是 Spring Boot 应用程序中最常见的配置文件。它用于配置应用程序的各种属性,如数据库连接、端口号、日志配置、定时任务等。
  • 加载顺序application.yml 在 Spring Boot 应用启动时加载,是默认的配置文件。
  • 用途 :一般用于与应用程序本身相关的配置,例如:
    • 端口配置
    • 数据库配置
    • 日志级别
    • 自定义的应用参数

2. bootstrap.yml

  • 主要作用bootstrap.yml 是用于初始化 Spring Cloud 配置的文件,通常与 Spring Cloud 配置中心(如 Spring Cloud Config)一起使用。它的作用是用来在应用启动时早期加载配置,尤其是外部配置源(例如配置中心、Consul、Zookeeper 等)。
  • 加载顺序bootstrap.yml 会在 application.yml 之前加载。Spring Boot 会首先加载 bootstrap.yml,然后加载 application.yml。因此,bootstrap.yml 中的配置优先级较高。
  • 用途 :主要用于与应用初始化阶段相关的配置,常用于:
    • 配置 Spring Cloud 配置中心
    • 配置外部服务(如 Consul、Zookeeper 等)
    • 设置 Spring Cloud 的相关配置

3. 加载顺序和优先级

  • 加载顺序 :Spring Boot 应用程序会先加载 bootstrap.yml,然后加载 application.yml
  • 优先级 :如果在两个文件中都定义了相同的属性,bootstrap.yml 中的配置会覆盖 application.yml 中的配置。

4. 常见的使用场景

  • application.yml

    • 用于单纯的 Spring Boot 项目,或者不涉及 Spring Cloud 的项目。
    • 配置 Spring Boot 内部的各种属性,例如数据库连接、服务端口、日志设置等。
  • bootstrap.yml

    • 主要用于 Spring Cloud 应用,尤其是涉及到外部配置源(如 Spring Cloud Config)的项目。
    • 在 Spring Cloud 中,bootstrap.yml 用来配置配置服务器的地址和其他初始化配置。

示例:

application.yml 示例(用于普通的 Spring Boot 配置):
XML 复制代码
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
bootstrap.yml 示例(用于 Spring Cloud 配置):
bash 复制代码
spring:
  application:
    name: my-spring-cloud-app

  cloud:
    config:
      uri: http://localhost:8888  # 配置中心的地址

application.yml 配置了应用的端口和数据库连接,bootstrap.yml 配置了 Spring Cloud Config 的服务器地址。

5. 总结

  • application.yml:适用于大多数普通的 Spring Boot 应用,包含应用的业务逻辑配置。
  • bootstrap.yml:用于 Spring Cloud 环境,专门处理配置中心的初始化和外部配置源的加载,且会在 application.yml 之前加载。

如果你在使用 Spring Cloud 的项目,通常需要同时使用这两个文件;而在没有使用 Spring Cloud 的普通 Spring Boot 项目中,application.yml 就足够了。

相关推荐
常利兵11 分钟前
Spring Boot缓存新玩法:一键切换,租户无忧
spring boot·后端·缓存
Lyyaoo.2 小时前
Spring Boot日志
spring boot·缓存·单元测试
恼书:-(空寄2 小时前
拦截器获取不到 POST 请求 JSON 结构体参数(完整解决方案)
java·spring boot·spring·servlet
希望永不加班2 小时前
如何在 SpringBoot 里自定义 Spring MVC 配置
java·spring boot·后端·spring·mvc
Welcome_Back2 小时前
SpringBoot后端开发测试全指南
spring boot·后端·log4j
李白的粉2 小时前
基于springboot的在线问卷调查系统
java·spring boot·毕业设计·课程设计·源代码·在线问卷调查系统
程序员老乔2 小时前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(一):你的Java该升级了
java·spring boot·python
无名-CODING2 小时前
从零开始!Vue3+SpringBoot前后端分离项目Docker部署实战(下):Vue前端Nginx反代与致命坑点盘点
前端·spring boot·docker
bug攻城狮2 小时前
为什么 Spring Boot 要单元测试?
spring boot·后端·单元测试
无名-CODING3 小时前
从零开始!Vue3+SpringBoot前后端分离项目Docker部署实战(中):Spring Boot后端与Docker Compose串联
spring boot·后端·docker