springboot 启动之后报错:Unsatisfied dependency through field ‘bbbClient’

springboot 启动之后报错:UnsatisfiedDepencyException:Error creating bean with name ‘aaaServiceImpl’: Unsatisfied dependency through field ‘bbbClient’。

这两天一直在进行着日常 debugger 查看代码。可是发生了一个挺“灵异”的事件。那就是我看的项目某些模块突然间启动不了了!!!着实震惊,因为在上午前半段我还启动了代码,启动了服务。具体的原因,我说一下。

因为客户需求,所以我又在原来的项目上面添加功能,然后中间需要用到其他服务的 service 层。所以,秉着能抄就抄、能模仿就模仿的原则,我查看其他的(也就是原来他人所写)代码,我发现可以用到 feign 。所以,也就照着“模仿”了。然后下面就是,我在启动的时候,出现了下面的错误:

org.springframework.beans.factory.UnsatisfiedDepencyException: Error creating bean with name 'aaaController' defined in file [E:\项目名字的物理路径\controller\AaaController.class]: Unsatisfied dependency expressed through constructor parameter 0: nested exception is org.springframework.beans.factory.UnsatisfiedDepencyException:Error creating bean with name 'aaaServiceImpl': Unsatisfied dependency through field 'bbbClient';  nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.项目名.b服务.feign.bbbClient': Unexpected exception during bean creation; nested exception is java.lang.IllegalstateException: No fallback instance of type class org.项目名.b服务.feign.bbbClientFallback found for feign client 项目名-b服务
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstrucorResolver.java:779)
    ......

解释一下啊,因为保密协议,我不确定什么可以放出,什么不可以放出,所以只要上面有涉及到的,我都用了其他来代替。

  1. aaaController:是我需要在这个 controller 来像前端返回一些请求。
  2. aaaServiceImpl:controller 到 service 的实现类。
  3. bbbClient:这就是我在 aaaController 里面需要用到 b 服务的 service 而所写

也就是,我在 a 服务里面调用 b 服务里面的某一个 service,我使用了 feign。

然后,就是这些我写完了之后,再进行 debugger 启动时,出现了上面的错误信息。

最开始,我觉得是没有启动好,或者 idea 日常的幺蛾子。所以,我就重新启动了一下。经过了一会儿,再次出现了,我想这会不会是这个项目有问题?然后我就把所有的模块都重启了一次。

又是一段漫长的等待,还是如此,然后还多了两个模块,报的也是上面同样的错误。我开始了怀疑人生。怎么又多了俩?这两个模块我也没有动代码啊?咋回事?然后我开始了网络查询。看了众多之后,看到了一篇和我一样的。他的解决方法是:在启动类上面添加了一个注释:@MapperScan(basePackages = “org.项目名.b服务.feign.bbbClient”)。然后我再次重新启动,然后可以启动了。可是这已经是中午了。对,整个上午没有干什么事情,就是一直在启动,启动…

在吃饭的时候,我问了一下带我的前辈,他说:既然之前能够启动,证明别人所写是没有问题的。你不能够私自在启动类上面添加一些注释。因为架子别人已经搭好了,你写需求还是没问题的,但是启动类,还是要小心一些。你也要想想是不是你自己写的代码有问题。

吃完午饭,我打开了电脑,神奇的一幕,我的 a 服务报错了。就是再 idea 上面有一片红色的波浪线。(此时是已经把启动类上面自己所加的注释给去了的)。然后开始找错的地方,用 idea 给的提示,发现再 pom.xml 文件里面添加了一个 b 服务的依赖。此时我不能理解。但是重启了一下,好了。至此,暂告一段。

接着,我开始照着抄了一下自己写的代码:因为这个需求逻辑相同,但是是不同的地方,不同的类(主要是 bbbClient 里面添加了新方法)。在再次启动的时候,对,我又怀疑了人生。我这次也添加了依赖啊?为什么还会出现这个问题呢?不理解,极致不理解。我自己查的也不是一个好的解决方法,我开始向我加的群里面的大佬们请教。很快,有位群友说:可以尝试一下 “选择 Maven -> 模块 -> Lifecycle -> clean” 编译一下试试。我重新试了试,至此完美解决。
或者可以在 idea 菜单页上选择 Build -> Rebuild Project。重新编译一下全项目。

造成一切的原因是:

  • 自己 a 服务里面用了 b 服务的 service ,自己没有添加依赖。这个谁都不愿,只能怨自己代码熟悉得不够多,不够熟练。
  • 嗯,只能说 idea 这幺蛾子有点多。之前是只要自己语法错误,它会给我们报出错误。但是这次没有。
  • 最后,还是只能怨自己。毕竟,要是熟悉了使用 feign 的步骤,哪会有这些问题?

以上,只算是自己的一些见解。谢谢!!!

你可能感兴趣的:(Java日常,spring,boot,后端,java)