亲宝软件园·资讯

展开

解析@FeignClient标识接口

低调的JVM 人气:3

Feign的作用

是将Http请求抽象化为一个Interface客户端,可以调用接口的形式来执行Http请求,以达到简化Http调用的目的。

Feign将分散在@FeignClient,@EnableFeignClients,标识接口,接口方法,Spring环境上的各种配置信息提取出来封装成一个对象,然后将对象里的信息注入到RestTemplate中,生成一次Http请求,然后执行。

正常在SpringMVC的Controller

是将Http请求的信息提取出来注入@RequestMapping标识的方法中;而Feign是将接口中的信息提取出来,封装成一个Http请求的相关信息,是对SpringMVC解析过程的一个逆向处理。

当我们通过IOC注入接口对象时,得到的肯定是此接口的实现类对象,这个对象应该就是SpringCloud通过动态代理生成的对象。对于接口对象生成动态代理对象,一般选用JDK的Proxy,这样实现简单且耦合性低,SpringCloud就是如此。

SpringCloud将@FeignClient标识的接口

注册成一个 FeignClientFactoryBean 类型的Bean对象,我们通过IOC注入的是此Bean的 getObject( ) 得到的对象,这篇文章主要就是讲解此方法的执行过程。

当然直接贴源码那太无脑了,我主要是会将解析的过程总结成一个个点

让大家明白在使用过程中需要注意以及可以灵活拓展的地方

以上就是解析@FeignClient接口的,生成相应接口的动态代理对象的过程。

最终所有信息都汇总到SynchronousMethodHandler对象里,在实际执行Http请求时,根据接口上的参数数据和MethodHandler信息生成feign.Request对象,此对象里装着当前Http请求的所有信息,然后Feign将这些信息拷贝到RestTemplate中,就能执行相应的Http请求。

希望能给大家一个参考,也希望大家多多支持。

加载全部内容

相关教程
猜你喜欢
用户评论