react 前端框架如何驱动企业数字化转型与创新发展
1182
2022-10-08
【微服务十二】SpringCloud之OpenFeign的核心组件(Encoder、Decoder、Contract)
一、前言
在前面的文章:
我们聊了以下内容:
本文我们继续讨论OpenFeign有哪些核心组件?
PS:本文基于的SpringCloud版本
二、核心组件
我们使用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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~