【以解决】项目使用feign时候提示bean不能注入feign

  • 作者: 凯哥Java(公众号:凯哥Java)
  • spring cloud
  • 时间:2022-10-27 16:19
  • 4457人已阅读
简介 在项目中使用feign,将feign相关的功能抽取到了feign-api项目中。修改了pom引用,也导入包都对。但是在启动的时候报找到不feign对应的bean。如下图:修改前的配置:这个userclient就在当前服务中。启动类上也开启了feign注解。如下图可以正常访问。当把feign对应的抽取到feign-api之后,就启动不了了。问题原因:根据提示信息,说明当前的com.kaigejava

🔔🔔好消息!好消息!🔔🔔

 如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号代升级ChatGPT4

有需要的朋友👉:微信号 kaigejava2022

在项目中使用feign,将feign相关的功能抽取到了feign-api项目中。修改了pom引用,也导入包都对。但是在启动的时候报找到不feign对应的bean。如下图:

5f8b74126955de6c917bfd93f01fd7da.png

修改前的配置:

7093b3718c1897f37189f64f947659c1.png

这个userclient就在当前服务中。启动类上也开启了feign注解。如下图

666a55f83a64c5a659b4159efaf5b687.png

可以正常访问。当把feign对应的抽取到feign-api之后,就启动不了了。

问题原因:

根据提示信息,说明当前的com.kaigejava.feign.clients.UserClient这个没有被spring管理。

这是因为UserClient现在在cn.kaigejava.feign.clients包下,

而order-service的@EnableFeignClients注解是在cn.kaigejava.order包下,不在同一个包,无法扫描到UserClient。

有两种方式解决:

解决扫描包问题

方式一:

指定Feign应该扫描的包:

@EnableFeignClients(basePackages = "cn.kaigejava.feign.clients")


方式二:

指定需要加载的Client接口:

@EnableFeignClients(clients = {UserClient.class})

两种方式的区别:

方式一:会扫描指定包下的所有类。比如还有A\B\C三个类。但是目前我order服务只是使用到了user服务的其他三个类的服务不需要。所以,本着最简单凡是。选择方式二.修改后如下:

daa049e151d2eb189a5f6bee215add28.png

重启。服务。

ff9d4b7bd461eec20f23eaa6379e851b.png

访问,访问正常。OK。解决


TopTop