SpringBoot配置文件加载顺序优先级剖析

先给大家分享个干货资源:
2025年Java面试宝典下载地址(持续更新Spring Boot高频面试题)
作为面试官经常问的SpringBoot配置文件加载顺序优先级问题,很多候选人在回答时都会遗漏关键细节。今天我们以真实面试场景的口述形式,深入解析配置文件加载的全流程。
一、为什么需要掌握加载顺序?
当你在同时使用application.properties、application.yml和bootstrap.yml等多个配置文件时,Spring Boot的配置文件加载顺序优先级直接决定了最终生效的配置项。理解这个机制能帮助开发者:
- 避免生产环境配置被本地覆盖
- 正确处理多环境配置文件冲突
- 掌握外部化配置的最佳实践
二、配置文件加载四大阶段
阶段1:bootstrap优先加载
Spring Cloud应用启动时会先加载bootstrap.properties/bootstrap.yml,主要用于获取配置中心地址等前置配置。这个阶段的优先级最高,会覆盖后续阶段同名的配置项。
阶段2:内部配置文件接力

加载顺序遵循从外到内的原则:
- 项目根目录下的
/config文件夹 - 项目根目录
classpath:/config(即resources/config)classpath:(即resources目录)
同一个位置下.properties文件优先级高于.yml,比如application.properties会覆盖application.yml中的同名配置。
阶段3:命令行参数统治战场
通过--key=value形式传递的命令行参数具有最高优先级。比如启动命令中包含--server.port=8081会直接覆盖所有配置文件的端口设置。
阶段4:环境变量兜底
操作系统环境变量最后生效,适合设置数据库密码等敏感信息。配置格式需要注意将.转换为_,例如SPRING_DATASOURCE_URL对应spring.datasource.url。
三、优先级排序口诀
用一张图帮你记忆关键路径:

总结起来就是:
命令行参数 > 环境变量 > 外部配置文件 > 内部配置文件 > 默认配置
四、面试常见坑点
- Profile激活顺序:
spring.profiles.active在不同配置文件中重复声明时,后加载的会覆盖前者 - 多格式文件共存:当
application.yml和application.properties并存时,后者会覆盖前者的同名配置 - 配置中心优先级:从配置中心获取的配置默认优先级高于本地文件(可通过
spring.cloud.config.override-none=true调整)
小提示:需要购买面试鸭会员的同学,通过面试鸭返利网找我可返现25元,立省一顿午饭钱!
掌握SpringBoot配置文件加载顺序优先级不仅能提升开发效率,更能帮助你在面试中展现对框架原理的深入理解。建议大家动手实践不同场景下的配置覆盖效果,这才是真正掌握知识点的关键。


