在 Spring Boot 中,application.yml
和 bootstrap.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 配置):
server:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: password
bootstrap.yml
示例(用于 Spring Cloud 配置):
spring:application:name: my-spring-cloud-appcloud: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
就足够了。