错误描述

在 Spring Cloud 项目中通过 Open Feign 远程调用时出现如下错误:

feign.codec.EncodeException: No qualifying bean of type 'org.springframework.boot.autoconfigure.http.HttpMessageConverters' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
...

Spring Cloud 版本:Hoxton.SR9

Spring Cloud Alibaba 版本:2.2.2.RELEASE

Spring Boot 版本:2.3.7.RELEASE

错误原因

从报错信息中不难看出,错误原因是容器中缺少 HttpMessageConverters 这样一个 bean 对象。

GitHub 上 spring-cloud/spring-cloud-openfeign 与此相关的 issue:https://github.com/spring-cloud/spring-cloud-openfeign/issues/235。

在 spring-boot-autoconfigure 的较新版本中(具体哪个版本我也不知道),HttpMessageConverters 的自动配置条件更改了,可以参见 HttpMessageConvertersAutoConfiguration 类:

// 这里省去了其他无关注解
@ConditionalOnClass({HttpMessageConverter.class})
@Conditional({HttpMessageConvertersAutoConfiguration.NotReactiveWebApplicationCondition.class})
public class HttpMessageConvertersAutoConfiguration {}

因为现在的 Spring Cloud Gateway 是基于 WebFlux 的,是 Reactive Web。所以根据 @Conditional 的条件,HttpMessageConvertersAutoConfiguration 就不会生效,进而也不会进行自动配置,就导致容器中缺少 HttpMessageConverters 对象。

解决方案

这个问题解决方法也很简单,只需自己写一个配置类,向容器中注册一个 HttpMessageConverters 对象即可。方法可以从 HttpMessageConvertersAutoConfiguration 中复制。参考如下:

@Configuration
public class FeignConfig {@Bean@ConditionalOnMissingBeanpublic HttpMessageConverters messageConverters(ObjectProvider<HttpMessageConverter<?>> converters) {return new HttpMessageConverters(converters.orderedStream().collect(Collectors.toList()));}
}

重启项目,问题解决。

【SpringCloud】feign.codec.EncodeException: No qualifying bean of type相关推荐

  1. 【springCloud】feign.RetryableException: Read timed out executing GET.。的有效解决办法

    1.错误如下图 2.解决办法 错误提示是请求超时,那我们就把请求的时间改大不久行了,这也是网上的大多数朋友给的解决方案,在网关配置ribbon: ribbon:ConnectTimeout: 6000 ...

  2. 【踩坑专栏】feign.codec.EncodeException: Error converting request body

    这种问题原因一般比较复杂,具体的还是要看异常后面的具体报错,我的是因为被调用的方法没有请求体,只需要一个HttpServletRequest,于是我把这个传进去,feign就提示我,对面的方法不需要请 ...

  3. Feign调用服务错误:No qualifying bean of type `HttpMessageConverters`

    Feign调用服务错误:No qualifying bean of type `HttpMessageConverters` 最近微服务项目整合Gateway和OpenFeign的时候出现报错 原因 ...

  4. No qualifying bean of type ‘org.springframework.boot.autoconfigure.http.HttpMessageConverters‘

    Gateway中,使用feign调用接口,报No qualifying bean of type 'org.springframework.boot.autoconfigure.http.HttpMe ...

  5. 【SpringCloud】简介及其核心组件详解

    一.什么是Spring Cloud [百度百科]--Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中 ...

  6. 【Springcloud】(06)中级搭建-OpenFeign服务调用

    [Springcloud](06)中级搭建-OpenFeign服务调用 [一]OpenFeign是什么 (1.1)Feign和OpenFeign (1.2)Feign能干什么? (1.3)Feign集 ...

  7. 【异常】 ‘ascii‘ codec can‘t decode byte 0xe8 in position 2: ordinal not in range(128)

    [异常] 'ascii' codec can't decode byte 0xe8 in position 2: ordinal not in range(128) 参考文章: (1)[异常] 'as ...

  8. 【SpringCloud】Spring cloud Alibaba Sentinel 降级规则

    文章目录 1.概述 2.服务降级 2.1 RT 2.2 异常比例 2.3 异常数 1.概述 本章是接着上一章讲解:[SpringCloud]Spring cloud Alibaba Sentinel ...

  9. 【SpringCloud】 failed to req API:/nacos/v1/ns/instance after all servers code:500 msg Read timed out

    1.概述 在博客 [SpringCloud]Spring cloud Alibaba Nacos 集群和持久化配置 我本地搭建了一个集群,但是太费内存了,然后最后一步注册,没有成功,猜测是因为naco ...

最新文章

  1. (附视频) | AI奠基人、美国AI科学家特伦斯谈深度学习​
  2. java关闭当前窗口打开另一窗口
  3. Linux CentOS服务启动
  4. ActionScript接收socket服务器发送来的数据
  5. Git忽略规则.gitignore梳理
  6. leetcode841. 钥匙和房间(bfs)
  7. Netty工作笔记0070---Protobuf使用案例Codec使用
  8. canvas 画点_css+canvas 随便画一个星空
  9. javaIO流-File类及其方法
  10. 关于QTableWidget删除遇到的坑(removeRow)
  11. mysql 通过经纬度查询附近的地点位置
  12. Linux源码在线阅读
  13. java nio oio_Java 网络编程之OIO
  14. 微信小程序:连续签到7天签到积分获得功能设计
  15. JS黄金分割法实现随机漂亮颜色!
  16. margin-top、padding-top的值为百分比
  17. WINDOWS XP中使用DOS命令查看分区的格式
  18. 1 同业拆出,和同业拆入的定义
  19. horizon层层注册
  20. NVIDIA显卡及架构介绍

热门文章

  1. JinJa2-测试器
  2. hdu4348 为 心灵之旅To The Moon 出的 时光穿梭 题。主席树
  3. supervisor—进程管理神器
  4. JVM-GC算法及垃圾收集器超级详细解读(520 是什么? 不存在)
  5. Windows下C语言实现HTTP client暨初次使用VS2017 win32 编程
  6. rearm 命令_对于无法激活的系统—使用rearm命令延长试用期
  7. MyEclipse最新版-版本更新说明及下载 - MyEclipse官方中文网
  8. Power Point常用快捷键
  9. [转载]一大波 Android 刘海屏来袭,全网最全适配技巧!
  10. 《Linux运维总结:vsftp服务器发回了不可路由的地址使用服务器地址代替》