You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中application.yml配置文件的加载顺序是怎样的?

Spring Boot 测试场景配置加载逻辑解答

猜想正确性结论

你的猜想整体符合Spring Boot的实际配置加载规则,仅其中的「工作链路/测试链路」属于自定义表述,Spring官方是通过配置源优先级和激活Profile两个核心逻辑来控制配置覆盖的。

测试场景下的完整配置加载顺序(优先级从低到高,高优先级同Key配置覆盖低优先级)

  • 第一步:加载主代码资源(对应你说的「工作链路」)的通用配置,即src/main/resources下的application.yml/application.properties
  • 第二步:加载测试代码资源(对应你说的「测试链路」)的通用配置,如果src/test/resources下存在同名application.yml/application.properties,优先级高于主资源的通用配置,同Key会直接覆盖
  • 第三步:加载激活Profile对应的专属配置:如果测试类标注了@SpringBootTest + @ActiveProfiles("test"),会激活test Profile,此时所有路径下符合application-test.yml命名规则的配置都会被加载,Profile专属配置优先级高于同路径下的通用配置,同Key会覆盖前两步加载的所有通用配置

补充规则:如果主资源和测试资源路径下都存在application-test.yml,测试资源下的Profile配置优先级更高,会覆盖主资源下的同Profile配置

常见注意事项

  • 如果测试类没有添加@ActiveProfiles注解,默认不会加载带Profile后缀的application-test.yml这类配置文件
  • 配置覆盖是Key维度的,不是全文件替换:高优先级配置没有覆盖的Key,低优先级配置的对应值仍然会生效
  • 测试场景下还有更高优先级的配置源:比如@SpringBootTest(properties = {"xxx=xxx"})直接指定的配置、@TestPropertySource注解加载的配置,优先级高于所有application系列配置文件

内容的提问来源于stack exchange,提问作者skyho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:24:05