You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

多环境配置文件优先级:应用项目与依赖Jar的配置加载顺序

优先级分析与问题排查

核心加载规则

  1. Ordinal值决定基础优先级:值越大优先级越高。所以所有application-dev.properties(ordinal=251)的优先级高于application.properties(ordinal=250),即环境专属配置会覆盖默认配置中的同名属性。
  2. 同Ordinal的配置源优先级:当多个配置源ordinal相同时,规范未固定顺序,具体取决于框架实现。从你的打印结果来看,项目内的配置源排在Jar包配置源之前,但属性加载时后加载的配置源会覆盖先加载的,如果Jar包内的配置源加载顺序更靠后,它的属性就会覆盖项目内的。

你的问题原因

app.some.feature.enabled显示为true(预期false),大概率是以下两种情况:

  • 项目内的application-dev.propertiesapplication.properties未配置该属性,系统自动使用Jar包中配置的true值;
  • 如果项目内配置了false,但被Jar包配置覆盖,说明同ordinal下Jar包的配置源加载顺序更靠后,优先级更高。

解决方案

要确保项目内的配置绝对覆盖Jar包中的同属性,可以:

  • 在项目内的配置文件中添加config_ordinal=252(比默认的251更高),提升其ordinal值;
  • 使用优先级更高的配置源(如系统属性、环境变量)来覆盖该属性。

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

火山引擎 最新活动