首先看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请求/响应压缩等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)