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