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 就足够了。

相关推荐
考虑考虑15 小时前
Jpa使用union all
java·spring boot·后端
阿杆1 天前
同事嫌参数校验太丑,我直接掏出了更优雅的 SpEL Validator
java·spring boot·后端
昵称为空C2 天前
SpringBoot3 http接口调用新方式RestClient + @HttpExchange像使用Feign一样调用
spring boot·后端
麦兜*2 天前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
麦兜*2 天前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
汤姆yu2 天前
基于springboot的毕业旅游一站式定制系统
spring boot·后端·旅游
计算机毕业设计木哥2 天前
计算机毕设选题推荐:基于Java+SpringBoot物品租赁管理系统【源码+文档+调试】
java·vue.js·spring boot·mysql·spark·毕业设计·课程设计
hdsoft_huge2 天前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
AD钙奶-lalala3 天前
SpringBoot实现WebSocket服务端
spring boot·后端·websocket
毕设源码-朱学姐3 天前
【开题答辩全过程】以 4S店汽车维修保养管理系统为例,包含答辩的问题和答案
java·spring boot·汽车