Spring Boot 的配置加载顺序是"后来居上"------优先级高的配置源会覆盖优先级低的配置源中的同名配置
覆盖规则如下:
- 后加载的配置具有更高的优先级,会覆盖先加载的配置。
- 如果多个配置源中存在同名配置项,最终生效的是具有最高优先级的那个配置项。
举个实际例子
假设有以下两个配置源
java
***:
ad:
rocketmq:
name-server: 127.0.0.1:9876 # 默认配置
java
# 设置环境变量
export ITBOX_AD_ROCKETMQ_NAME_SERVER=10.10.20.46:9876
最终生效的 itbox.ad.rocketmq.name-server
是环境变量的值:10.10.20.46:9876
。
线上部署场景,假设激活了 kubernetes Profile,加载顺序和覆盖逻辑如下 :