相同的 key, Nacos 配置一定会覆盖 application.yaml 吗?

一,背景:

之前在使用 Nacos 的时候有个疑问,同样的 key,在 Nacos 配置了,在 application 也配置了,到底会有哪个呢?一直没空查,后来在网上看到过文章,说 Nacos 是在 application 之后,所以相同的 key ,Nacos 的值会覆盖掉 application。实践出真知,决定实际操作看一下。

结论:相同的 key,Nacos 不会因为是后加载的,就覆盖原来的 application 的值。

二,版本、配置及代码:

1,版本:

nacos-server:2.2.3

nacos-config-spring-boot-starter: 0.2.12

spring-boot:2.7.16

2,配置:

application 配置:

nacos 配置:

3,代码:

期望:返回 abc1546422222222:abc1546422222222

实际:返回 1233:1233

三,分析开始

项目启动时打断点,来到

org.springframework.core.env.PropertySourcesPropertyResolver#getPropertyAsRawString

1,获取 key 的配置值:

abc:1 这个 key 一定是不存在的,因为会有默认值,此时处理是:先根据这个 key 找,找不到,则需要按照 : 拆分,得出真正的 key ,再去查一次,如果还查不到,则需要把 1 这个默认值返回。

2,所以第二次来到了:此时 key 为 abc

此时就找到了 application 中配置的值:

点开这个 propertySource 看一下里面具体的信息:

看第6 、7条,第 6 条就是从 applicaion 得出的值:

第 7 条,是从 nacos 获取的值:

但是!从第 6 条里已经找到了 key 为 abc 的值,则此时会直接返回:

不会再去遍历找 nacos 里的值。所以此时就是 application 中的值。

后续再分析本地配置文件的加载顺序。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值