Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined.(22.12.9)

本文介绍了解决Spring Cloud Feign远程调用时出现的IllegalStateException和AbstractMethodError错误的方法。通过调整依赖配置,排除了冲突的Ribbon依赖,并正确引入了Spring Cloud Loadbalancer。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

谷粒商城使用feign进行远程调用
feign是一个声明式的HTTP客户端,他的目的就是让远程调用更加简单。给远程服务发的是HTTP请求。
会员服务想要远程调用优惠券服务,只需要给会员服务里引入openfeign依赖,他就有了远程调用其他服务的能力。


问题描述

1.按照视频教程进行配置,出现以下报错信息:

Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?


这是由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错,所以引入spring-cloud-loadbalancer依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>




2.项目虽然运行成功,但是当我访问localhost:8000/member/member/coupons这个地址的时候又出现新的报错信息

java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;



原因分析:

由于导入 spring-cloud-loadbalancer后nacos中 spring-cloud-starter-netflix-ribbon会与它冲突,从而会造成loadbalancer包失效,通过将spring-cloud-starter-alibaba-nacos-discovery中spring-cloud-starter-netflix-ribbon排除,然后再引入spring-cloud-loadbalancer


解决方案:

引入nacos依赖的时候排除掉netflix-ribbon,然后再引入loadbalancer依赖

<dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
          <exclusions>
              <exclusion>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
              </exclusion>
          </exclusions>
</dependency>

<dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值