Spring Boot 配置文件生效规则
本文档整理了 Spring Boot 配置文件的加载顺序与优先级规则,包括项目内、项目外及多环境配置的管理方式。
1. 通用优先级规则(从高到低)
Spring Boot 中,配置优先级顺序如下(高优先级会覆盖低优先级):
- 命令行参数 :
--server.port=8081 - JNDI属性 :来自
java:comp/env - Java系统属性 :
-Dserver.port=8081 - 操作系统环境变量
- 配置文件 (
application.properties/application.yml),按以下位置顺序加载:- 当前目录下的
/config子目录 - 当前目录
- classpath 下的
/config包 - classpath 根路径
- 当前目录下的
- Profile 专用文件 :
application-{profile}.properties/yml - 默认属性 :
SpringApplication.setDefaultProperties
2. 项目外配置文件规则
适用场景:不重新打包 JAR 的情况下修改配置。
优先级顺序(从高到低)
| 优先级 | 位置(相对于 JAR 包运行目录) | 说明 |
|---|---|---|
| 最高 | ./config/ |
JAR 同级目录下的 config 文件夹,推荐生产环境使用 |
| 高 | ./ |
JAR 同级目录 |
| 低 | classpath:/config/ |
JAR 包内部 config 包(即 resources/config) |
| 最低 | classpath:/ |
JAR 包内部根路径(即 resources 根目录) |
高优先级配置会覆盖低优先级配置,不同位置配置互补合并。
完全自定义配置文件位置
使用 --spring.config.location 强制指定外部配置目录(此时内部配置不再生效):
bash
java -jar my-app.jar --spring.config.location=file:/绝对路径/配置文件夹/application.properties