springboot配置文件加载顺序 bootstrap
2025年java面试宝典网盘地址:
点击获取(提取码:9b3g)

最近在面试鸭返利网的模拟面试中,经常有同学被问到SpringBoot配置文件的加载顺序问题。这个问题看似基础,却是检验候选人框架理解深度的试金石。今天我们就从实战角度拆解这个高频考点。
为什么说bootstrap是配置加载的"先锋部队"?
在SpringCloud项目中,bootstrap.yml/properties总是比application.yml先加载。这个设计就像特种兵打头阵——先读取注册中心地址、加解密配置等基础设施参数。比如你要用ConfigServer获取配置,就必须把ConfigServer的地址写在bootstrap里。

这里有个易错点:普通SpringBoot项目默认不加载bootstrap文件。如果需要激活,必须添加spring-cloud-starter-bootstrap依赖。就像你买了新手机,得先插SIM卡才能联网。
配置文件的加载"排兵布阵"
完整的加载顺序可以这样记口诀:"外打内,名压缀,profile定胜负":
- 当前目录的/config子目录
- 当前目录
- classpath下的/config包
- classpath根目录
在每个位置中,加载顺序是:
bootstrap.yml ➔ bootstrap.properties ➔ application.yml ➔ application.properties
这就好比军事演习时,指挥官会根据现场环境(profile)调整策略,带active profile的配置文件永远具有最高优先级。
配置文件"打架"怎么解决?
当多个配置文件存在同名配置项时,后加载的会覆盖先加载的。但有个特例:通过spring.config.import显式导入的配置会覆盖主配置文件的设置。这就像公司里直属领导的命令优先级高于其他部门领导。

遇到过这样的坑:在Kubernetes部署时,把配置文件放在容器挂载目录,结果优先级高于jar包内的配置。这时候就需要清楚知道加载顺序,就像调试分布式系统时要明确各节点的启动顺序。
如果大家需要购买面试鸭会员,可以通过面试鸭返利网找到我,立返25元。建议把常用配置拆分到不同profile文件,用环境变量切换,就像用不同的钥匙开不同的锁。毕竟清晰的配置管理,才是工程化的基石。


