spring feign

三丰 soft张三丰

什么是feign

Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。

Feign解决了什么问题?

封装了Http调用流程,更适合面向接口化的编程习惯

在服务调用的场景中,我们经常调用基于Http协议的服务,而我们经常使用到的框架可能有HttpURLConnection、Apache HttpComponnets、OkHttp3 、Netty等等,这些框架在基于自身的专注点提供了自身特性。而从角色划分上来看,他们的职能是一致的提供Http调用服务。具体流程如下:

Feign架构

常用参数设置

feign.hystrix.enabled=false feign的调用过程中是否启用hystrix,默认false feign.httpclient.enabled=ture 是否使用httpclient来调用接口,默认true;要使用httpclient还需要引入feign-httpclient依赖 feign.okhttp.enabled=false 是否使用okhttp来调用接口,默认false;要使用okhttp需把改属性设为true,还需要引入feign-httpclient依赖

Feign和Ribbon的使用区别

Ribbon和Feign都是用于调用其他服务的,不过方式不同。

1.启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。

2.服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。

3.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。

Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可, 不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

Feign整合了Ribbon和Hystrix

1.Feign调用其他微服务API时可以使用统一的HTTPZ请求模板,包含请求参数,URL等信息,便于管理维护。Ribbon的请求通过RestTemplate调用其他微服务API,参数通过字符串拼接在URL后面,不方便写也不利于管理。

2.Spring Cloud为Feign提供了支持Spring MVC的注解,可以通过注解方便使用。

3.可插拔的注解支持,包括Feign注解和JAX-RS注解。

4.支持可插拔的HTTP编码器和解码器。

5.支持HTTP请求和响应的压缩处理。

6.Feign支持Hystrix和他的回退功能

7.Feign支持Ribbon的负载均衡功能

©著作权归作者所有:来自51CTO博客作者mb5fe32930661bd的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. android基于Socket的系统调用实现
  2. Eclipse中Android公共库的正确建立及调用方法
  3. 【BUG修补匠】 Android微信支付返回码-1之坑(首次调用成功第二次
  4. unity调用android语音识别
  5. Android调用安卓自带摄像头API开启双摄
  6. Android(安卓)HAL 是如何被调用的
  7. AndServer+Service打造Android服务器实现so文件调用
  8. Android(安卓)java层和C层的相互调用
  9. Android开发心得——网页通过webview调用Android的图片或文件选

随机推荐

  1. 关于android软键盘隐藏总结
  2. Android studio 快捷键(本人习惯,有做一些
  3. ubuntu下ndk编译ffmpeg0.8.1
  4. Android学习——异常(1)
  5. android 判断MIUI悬浮窗权限是否打开
  6. EditText控件默认总是获取输入法的解决办
  7. 适用于Google Play开发者控制台的付费应
  8. android zxing二维码横屏改竖屏
  9. 将数据从java类传递到Web View html
  10. android 开源 + 一些素材网站