【以解决】项目使用feign时候提示bean不能注入feign
- spring cloud
- 时间:2022-10-27 16:19
- 5533人已阅读
简介
在项目中使用feign,将feign相关的功能抽取到了feign-api项目中。修改了pom引用,也导入包都对。但是在启动的时候报找到不feign对应的bean。如下图:修改前的配置:这个userclient就在当前服务中。启动类上也开启了feign注解。如下图可以正常访问。当把feign对应的抽取到feign-api之后,就启动不了了。问题原因:根据提示信息,说明当前的com.kaigejava
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
在项目中使用feign,将feign相关的功能抽取到了feign-api项目中。修改了pom引用,也导入包都对。但是在启动的时候报找到不feign对应的bean。如下图:
修改前的配置:
这个userclient就在当前服务中。启动类上也开启了feign注解。如下图
可以正常访问。当把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服务的其他三个类的服务不需要。所以,本着最简单凡是。选择方式二.修改后如下:
重启。服务。
访问,访问正常。OK。解决