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

Spring Boot多Profile场景:指定prod启动时是否合并配置?

Spring Boot多Profile配置合并问题解答

答案是肯定的——当你以prod Profile启动Spring Boot应用时,会同时合并所有包含prod的配置块,所以你的应用里会同时拥有property和another-property这两组属性。

具体逻辑说明

Spring Boot处理单个application.yml中用---分隔的多Profile配置块时,遵循以下规则:

  • 当指定启动Profile为prod时,所有配置块里spring.profiles字段包含prod的都会被激活加载;
  • 针对你的配置内容:
    • 第一个配置块(spring.profiles: dev)不会被激活,所以这部分的property配置完全不生效;
    • 第二个配置块(spring.profiles: preProd, prod)因为包含prod,会被激活,another-property的配置会被加载到应用上下文;
    • 第三个配置块(spring.profiles: prod)直接指定了prod,同样会被激活,这里的property配置也会被加载;
  • 若存在同名属性,Spring Boot会按照「后加载覆盖先加载」的优先级处理——也就是在yml文件中位置更靠后的配置块,会覆盖前面块的同名属性。比如如果第二个块也定义了property.one,那第三个块的prod-bla会替换掉它,但你的例子里两个激活块的属性没有重叠,所以都会完整保留。

最终生效的配置示例

当你用prod Profile启动后,应用实际生效的配置会是:

another-property:
  fist: bla
  secong: blabla
property:
  one: prod-bla
  two: prod-blabla

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:42:23