继承RequestInterceptor,实现feign调用前参数配置,为何会被所有项目下请求调用

继承RequestInterceptor,实现feign调用前参数配置,为何会被所有项目下请求调用?

本篇会分以下几个模块进行梳理,如有需要可以直接进行跳转

  1. Feign调用原理
  2. 重要组件的主要作用
  3. Feign的简单使用
  4. Feign调用前的参数设置
    (1)header存值大小限制
    (2)多线程情况下的上下文丢失
  5. 配置为何会被所有项目下请求调用

一、Feign调用原理

SpringCloud 中 Feign 是目前跨服务调用应用中使用最多的技术。
在微服务启动时,Feign会进行包扫描,对加@FeignClient注解的接口,按照注解的规则,创建远程接口的本地JDK Proxy代理实例。然后,将这些本地Proxy代理实例,注入到Spring IOC容器中。当远程接口的方法被调用,由Proxy代理实例去完成真正的远程访问,并且返回结果。
执行图例:
在这里插入图片描述

二、重要组件的主要作用

组件名称 作用领域
JDK Proxy 不属于Feign组件 内置代理
FeignInvocationHandler 实现了InvocationHandler,Feign专属处理器,反射用来寻找MethodHandler
SynchronousMethodHandler 实现了MethodHandler,进行请求重封装,并接收返回值
1、创建requestTemplate 2、client.excecute()正式调用 3、response接收
Client 最终进行请求封装的组件
LoadBalancerFeignClient负载均衡客户端选择调用Default进行请求

执行顺序图示:
在这里插入图片描述
Cilent的四种实现方式,注意上表中Client调用方式

名称 来源
Default feign.Client
ApacheHttpClient Apache httpclient
OkHttpClient OkHttp3
LoadBalancerFeignClient Ribben

三、Feign的简单使用

一、创建一个接口服务,用来专属调用统一url的另一个服务
二、创建方法,设置调用参数与url
三、补充请求方式、请求参数、请求地址

@FeignClient(name = "feignTest", url = "${otherService.url}", configuration = FeignConfiguration.class)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值