项目版本

<spring-boot.version>2.3.0.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>

今天使用openfeign服务间调用遇到一个很奇怪的问题,我新建了一个专门feign调用的包用来转发服务间调用的请求,项目结构如下

记一次feignclient无法注入的问题

provider配置如下: 

记一次feignclient无法注入的问题 

其他类调用这个provider采用自动注入的方式

记一次feignclient无法注入的问题

就是这里我编译的时候没问题,但是项目跑起来报错,找不到bean。

解决办法

需要在启动类添加

@EnableFeignClients(basePackages = "com.cn.geostar.api.*")

这个这个包指向feignclient的类路径。

 

题外话:

建项目导包的时候如果不小心有可能会出现下面的问题

No Feign Client for loadBalancing defined. 
Did you forget to include spring-cloud-starter-netflix-ribbon?

从错误中看到,说的是我们是不是忘记引入spring-cloud-starter-netflix-ribbon 包了,检查一下pom文件,发现是因为少了服务注册中心的包和配置(谁给我干掉了,气死我了),这里面包含了ribbon。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

好了可以愉快的玩耍了!

相关文章: