NACOS 配置中心 无法获取配置 报错Could not resolve placeholder

NACOS 配置中心 无法获取配置 报错Could not resolve placeholder

本文用于记录自己第一次解决bug的过程,尽量把一些在解决bug上的思路记录并分享与同路人。

本次解决了在SCA(spring cloud alibaba)上部署了Nacos的配置中心,想获取中心上配置了的参数,但是客户端(想通过nacos获取参数的服务)启动报错could not resolve placeholder的错。

想看知道直接造成bug的原因,可以直接拉到后面看结论,然后马上动手尝试,看看能不能解决问题。

*在左侧加了竖线的,表示我当时的一些思考以及思路历程

报错信息:

在这里插入图片描述
在这里插入图片描述

环境状态:
工具版本
JKD11
SPRINGCLOUD ALIBABA2.1.0.RELEASE
NACOS CONFIG2.1.0.RELEASE(界面显示1.2.0)
NACAOS配置中心名称

在这里插入图片描述
在这里插入图片描述

服务工程的配置

在这里插入图片描述

服务工程代码

在这里插入图片描述

!!!开始debug解决错误

先看报错信息定位到哪一个类报错。

在这里插入图片描述

postProcessProperties 看文字大概推测就是bean构建好之后,想把properties的值注入进去,初步有一个猜想就是.properties的值肯定是存在一个地方,然后大概通过 propertiessource.get(key) 类似这样的方法把值获取到,然后再赋值到代码中的message

根据上面的思考想法,就在对应的代码行debug,然后一行行去F7看结果.根据debug varibles 查看变量那块,知道了一些变量名称,然后就可以根据这些变量名称做为关键字,从而可以快速定位

ps:我需要看的properties 名字是lagou.message 以及 获取数据值的源是NacosPropertySource(因为我认为我的值要从nacos那边取过来,NacosProperteySource应该就是我要找的类),那这样就可以快速debug停到这里,慢慢看代码值的变化。
在这里插入图片描述
对应运行时的变量值

在这里插入图片描述

通过变量值可以看到,当前的propertySource就是我需要的Nacaos,然后他的配置文件名称就是lagou-code-config.YAML,看像是我配置的名称,且是用我的配置文件拼接而成的(通过YAML大写推估)。

但是他的source的size是0,那表示这个lagou-code-config.YAML是空的。那两种情况要不就连接不上,要不就是找不到(名字不对),目前名字严格意思上来说,代码写lagou-code-config.yaml ,而nacaos配置中心的dataid是写lagou-code-config ,两者差了个YAML。可以考虑重新生成一个dataid是lagou-code-config-yaml的

新增一个配置中心文件

在这里插入图片描述

添加后,重新debug自己的项目

在这里插入图片描述

bingo!! 出来的,size不为0了,有数据且数据内容就是我自己添的othernews。

到此我的bug已经解决完了。

结论:dataid 的名字要与服务工程配置里面拼接的一模一样,包括文件后缀!才能访问到

这里在留一个坑给自己去再填充一下,加深对nacaos的源码理解跟加强自己debug阅读代码能力。

为啥最开始的lagou-code-config 的size为0,而lagou-code-config.yaml却不为0? nacaosProperty怎么设置数据到里面的.

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值