在 Spring Boot 项目中,bootstrap.yml
和 application.yml
是两个常用的配置文件,它们的作用和加载顺序有所不同。以下是它们的详细说明:
bootstrapyml_5">1. bootstrap.yml
-
作用:
bootstrap.yml
是 Spring Cloud 项目中的配置文件,用于加载应用程序启动阶段的配置。- 它优先于
application.yml
加载,通常用于配置应用程序上下文的初始属性。 - 常用于配置 Spring Cloud 相关的组件,例如:
- Spring Cloud Config(远程配置中心)
- Nacos(服务发现和配置管理)
- Consul、Eureka(服务注册与发现)
-
加载时机:
-
典型配置:
spring:application:name: my-service # 应用名称cloud:nacos:config:server-addr: 127.0.0.1:8848 # Nacos 配置中心地址file-extension: yaml # 配置文件格式namespace: dev # 命名空间group: DEFAULT_GROUP # 配置组discovery:server-addr: 127.0.0.1:8848 # Nacos 服务发现地址
2. application.yml
-
作用:
application.yml
是 Spring Boot 项目中的主配置文件,用于配置应用程序的运行时属性。- 它会在
bootstrap.yml
之后加载,通常用于配置应用程序的具体行为。 - 可以配置数据库连接、日志、缓存、端口等。
-
加载时机:
- 在
bootstrap.yml
加载完成后,application.yml
会被加载。 - 它由
application
上下文加载。
- 在
-
典型配置:
server:port: 8080 # 服务端口spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: passworddriver-class-name: com.mysql.cj.jdbc.Driverlogging:level:root: INFOcom.example: DEBUG
bootstrapyml__applicationyml__66">3. bootstrap.yml 和 application.yml 的区别
特性 | bootstrap.yml | application.yml |
---|---|---|
加载顺序 | 优先加载 | 在 bootstrap.yml 之后加载 |
作用范围 | 应用程序启动阶段的配置 | 应用程序运行时的配置 |
典型用途 | 配置远程配置中心、服务发现等 | 配置数据库、日志、端口等 |
上下文 | bootstrap 上下文 | application 上下文 |
是否必须 | 非必须,仅在需要 Spring Cloud 功能时使用 | 必须,Spring Boot 的主配置文件 |
4. 配置文件的优先级
Spring Boot 支持多种配置文件格式(如 .yml
和 .properties
),它们的加载优先级如下:
bootstrap.yml
(或bootstrap.properties
)application.yml
(或application.properties
)- 外部配置文件(如通过
--spring.config.location
指定的文件)
5. 示例:结合 Nacos 的配置
bootstrapyml_86">bootstrap.yml
spring:application:name: my-servicecloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yamlnamespace: devgroup: DEFAULT_GROUPdiscovery:server-addr: 127.0.0.1:8848
application.yml
server:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: passworddriver-class-name: com.mysql.cj.jdbc.Driverlogging:level:root: INFOcom.example: DEBUG
6. 注意事项
- 如果不需要使用 Spring Cloud 的功能(如远程配置中心、服务发现等),可以只使用
application.yml
。 - 在 Spring Cloud 项目中,
bootstrap.yml
通常用于配置远程配置中心(如 Nacos、Spring Cloud Config)的连接信息。 - 如果
bootstrap.yml
和application.yml
中有相同的配置项,bootstrap.yml
的配置会优先生效。
通过合理使用 bootstrap.yml
和 application.yml
,可以更好地管理 Spring Boot 和 Spring Cloud 项目的配置。