【微服务十二】SpringCloud之OpenFeign的核心组件(Encoder、Decoder、Contract)

网友投稿 1182 2022-10-08

【微服务十二】SpringCloud之OpenFeign的核心组件(Encoder、Decoder、Contract)

【微服务十二】SpringCloud之OpenFeign的核心组件(Encoder、Decoder、Contract)

一、前言

在前面的文章:

我们聊了以下内容:

本文我们继续讨论OpenFeign有哪些核心组件?

PS:本文基于的SpringCloud版本

2.3.7.RELEASE Hoxton.SR9 2.2.6.RELEASE org.springframework.boot spring-boot-dependencies ${spring-boot.version} pom import org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import com.alibaba.cloud spring-cloud-alibaba-dependencies ${spring-cloud-alibaba.version} pom import

二、核心组件

我们使用feign最核心的是要构造一个FeignClient,里面包含了一系列的组件:Encoder、Decoder、Logger、Contract。

1、Encoder

Encoder编码器,当我们调用接口时,如果传递的参数是一个对象,Feign需要对这个对象进行encode编码,做JSON序列化;即:Encoder负责将Java对象转换为JSON字符串。

2、Decoder

Decoder解码器,当接口收到一个JSON对象后,Feign需要对这个对象进行decode解码,即:Decoder负责将JSON字符串转换成JavaBean对象。

3、Contract

一般来说Feign的@FeignClient注解需要和spring web mvc支持的@PathVariable、@RequestMapping、@RequestParam等注解结合起来使用,但是Feign本身是不支持Spring Web Mvc注解的,所以需要有一个契约组件(​​Contract​​),负责解释Spring MVC的注解,让Feign可以和Spring MVC注解结合起来使用。

4、Logger

Logger为打印Feign接口请求调用日志的日志组件,默认为Slf4jLogger。

5、默认组件

Decoder:ResponseEntityDecoderEncoder:SpringEncoderContract:SpringMvcContractLogger:Slf4jLogger

1)为什么默认是这些?

根据SpringBoot自动装配的特性,找到​​@FeignClient​​​注解所在的jar包 --> ​​spring-cloud-openfeign-core​​中的XxxAutoConfiguration类 或 XxxConfiguration类。

又上述这些组件都是被FeignClient所使用,找到​​FeignClientsConfiguration​​类;

<1> 默认的Eecoder:

<2> 默认的Decoder:

<3> 默认的Contract:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序实战程序简易新闻的制作方法(微信小程序实战程序简易新闻的制作方法是什么)
下一篇:微信小程序简单实现form表单获取输入数据实例分享(微信小程序form表单提交)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~