Feign的实现原理
2022-12-13 16:23:35 12 举报
首次理解,可能有错
作者其他创作
大纲/内容
OkHttp3 开源组件
其他MethodHandler
method的dispatch缓存
使用的HTTP请求工具
methodHandler
RequestTemplate
methodHandler实例内部有一个RequestTemplate用于java层面发出http请求
HTTP请求
同步获取远程结果 SynchronousMethodHandler
delegate
Apache HttpClient 开源组件
LoadBalancerFeignClient
实现
HttpRequest包装类,用于从java层面发出http请求
ApacheHttpClient
实例化FeignClientsRegistrar类,扫描@FeignClient注解的RPC接口
feign.client.Default
启动
构造出
替换
......
其他实现
@FeignClient( value = \"demo-provider\
JDK~HttpURLConnnection
feign.Client
根据接口中的方法的SpringMVC类型的注解,替换掉 RequestTemplate 模板实例中的参数,构造最终的 HTTP 请求
响应的接收、解码等处理
为接口生成调用处理器invocationHandler
Ribbon 负载均衡技术
获取到method
请求的URL
为接口下的各个方法生成方法处理器methordHandler
比如
Map dispatch(RPC 方法的反射实例,生成的methodHandler)
创建 RPC接口的 FactoryBean 工厂类实例,并将FactoryBean 注入 Spring IOC 容器
启动类添加@EnableFeignClients声明开启Feign功能
invocationHandler
交付
Feign 英文直译为假装/装作,也就是说 Feign 是一个伪客户端,即它不做任何的 HTTP 请求处理。Feign为各类HTTP请求方式,制作了一个便于开发RPC的反向代理框架。
发出请求
解析注解内容生成本地 JDK 动态代理实例
远程调用要素
method
RequestTemplate:目的URL、请求类型、args[0]...
如: @GetMapping(\"/hello/v1\")
Service
其他实现的invocationHandler接口的Handler
OkHttpClient
0 条评论
下一页