目录

chen 的个人博客

VX:TiAmo151028
Phone:13403656751
Email:zxydczzs@gmail.com

X

分享一个bug Unsatisfied dependency expressed through field || Injection of resource dependencies failed

一、事故发生时

  1. 项目中使用的腾讯云的 Apache Pulsar 消息中间件,对应的需求需要使用的延迟队列技术进行开发,所以创建了一个新的 topic 和 groupName,topicRef 和 groupName 都为 “commerce-red-apply-download”;
  2. 在开发完成后,构建项目时,报错上述标题错误,我们是分环境部署的,同样的代码,同样的 topicRef 和 groupName,在 dev 环境中可以构建启动成功,而在另一个环境则启动失败,报错上述标题错误,百思不得其解,说什么未满足依赖关系和注入资源依赖项失败;
  3. 最开始将问题定位到了 Bean 加载上面,想着既然这个类在加载的时候注入不进去其余的类,那我将这个类延迟加载,所以就把这个类加了个懒加载,行,这个类不报了,另外的类也开始报错这个,反复三四次之后,觉得不对劲,为什么之前都好好的类,现在都报这个错呢?这么无休止的加懒加载,也不太行,问题的根本就不在这个 Bean 的加载顺序上;
  4. 在面向百度编程了一会,依然没有得到想要的结果,就去仔细看报错日志,觉得是不是漏掉了什么?不看不知道,一看吓一跳,它隐藏的很深,但还是发现了他image.png
  5. 这么小的一行日志在这么多日志中经常会被忽略掉,我只看了下面那一行日志,完全忽略了这一行日志,原来它才是项目启动失败的罪魁祸首;
  6. 这一行日志中有个比较熟悉的东西“commerce-red-apply-download-RETRY”,和我在第一条里面说过的我创建的 topic 很像,然后我去对比了两个环境的这个 topic 的 groupName,以下是对比结果
    “commerce-red-apply-download ”
    “commerce-red-apply-download”
  7. 有没有发现什么不一样?对的,第一行比第二行多了个空格,带着疑问的想法将代码中的 groupName 最后多加了一个空格,测试构建项目,成功了。。。

二、总结

不要被表面的报错日志给勾引了,要在报错日志上下都看一遍,有时候就能一针见血的指出问题的所在;


标题:分享一个bug Unsatisfied dependency expressed through field || Injection of resource dependencies failed
作者:zzzzchen
地址:https://dczzs.com/articles/2022/07/21/1658380976587.html