SpringCloud系列之Feign-8.深入了解FeignContract协议解析过程

SpringCloud系列之Feign-8.深入了解FeignContract协议解析过程,第1张

首先看Contract这个接口类中只有一个parseAndValidatateMetadata方法,其余两个都是子类,我们可以打个断点逐步跟一下。

其中BaseContract这个类主要是做数据验证的功能

断点进来之后我们可以看到,实例中是一个IService的类,然后下面有两个checkState方法,checkState方法是做个验证,如果第一个参数true则走过,如果是false则返回异常信息。

其中targetTypegetTypeParameters()是获取类的泛型,在Feign中是不允许有泛型的,如果有则返回Parameterized types unsupported class name的异常

第二个targetTypegetInterfaces()length <= 1的意思就是这个类只能做单继承,否则继续抛出异常。

这个验证如果没问题就尽心下一个验证了:

如果这个类继承了一个类,那么我们就看下继承的类是否又继承了类,如果又继承了,则抛出错误: 该类仅支持单层次的继承。

这个方法就是判断类不能是个对象,也不能有static方法,下面还有个UtilisDefault(method)方法:

这里是判断方法不能仅仅是个pulic方法,且必须是个接口才行,看不懂的可以参见帖子:

>

您可以考虑为Feign请求启用请求或响应GZIP压缩。您可以通过启用其中一个属性来执行此 *** 作:

feigncompressionrequestenabled=true

feigncompressionresponseenabled=true

Feign请求压缩为您提供与您为Web服务器设置的设置相似的设置:

feigncompressionrequestenabled=true

feigncompressionrequestmime-types=text/xml,application/xml,application/json

feigncompressionrequestmin-request-size=2048

这些属性可以让您对压缩介质类型和最小请求阈值长度有选择性。

以上就是关于SpringCloud系列之Feign-8.深入了解FeignContract协议解析过程全部的内容,包括:SpringCloud系列之Feign-8.深入了解FeignContract协议解析过程、Feign踩坑记录:JSON parse error、Feign请求/响应压缩等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9278982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存