springcloud是使用rest协议进行信息传递,同时在netfix的项目中实现了一个feign组件来简化编写代码的麻烦

feign的使用方式如下

1 定义一个接口interface
public interface helloclient(){
@RequestLine("GET /hello") //定义一个接口并查找服务中的hello方法
public String hello(); //本地接口定义一个hello的方法
@RequestLine("GET  /person/{id}") 
public Person getPerson(I@Param("id")  Interger id);//本地接口定义一个获取Person类的方法(预先实例化一个person类)
}
2 在实现类中调用feign连接服务端
helloclient client = Feign.builder().target (helloclient.class,"http://locahost:8080"); //使用接口定义实现一个远程服务上的服务类
String result = client.hello();//实现服务类上的服务方法

HelloClient client = Feign.builder().decoder(new GsonDecoder()).target(HelloClient.class,"http://localhost:8080");
//中间使用GsonDecoder进行Gson解码
Person p =client.getPerson(2);
其实feign就是从request中获取数据,处理再回传的过程,但是这个过程很重要,基本占据编码过程中的三分之一;

而feign是如何实现的了?

请看如下代码:

Webclient client = webclient.create("http://");//通过rest服务连接服务提供端
Response response = client.get();//获得服务端的返回
InputStream ent = (InputStream)response.getEntity();//将返回元素解析为流
String content = IOUtils.readStringFormStream(ent);//获取返回
return content;

以上是http原始实现过程,feign的实现实际是截取第一段获取到请求后,包装为自己的请求,

处理完后再将输出改写城http的原始输出进行回传,也就是在http的传输外面包了一层而已,

虽然原理不复杂,但是在实际编码中,确实省却了很多复杂繁冗的过程

feign组件的功能与实现原理相关推荐

  1. 学习 launch-editor 源码整体架构,探究 vue-devtools「在编辑器中打开组件」功能实现原理...

    1. 前言 你好,我是若川[1],微信搜索「若川视野」关注我,专注前端技术分享,一个愿景是帮助5年内前端开阔视野走向前列的公众号.欢迎加我微信ruochuan12,长期交流学习. 这是学习源码整体架构 ...

  2. @EnableAspectJAutoProxy||AOP原理:【看给容器中注册了什么组件,这个组件什么时候工作,这个组件的功能是什么?】

    AOP原理:[看给容器中注册了什么组件,这个组件什么时候工作,这个组件的功能是什么?] @EnableAspectJAutoProxy是什么? * AOP原理:[看给容器中注册了什么组件,这个组件什么 ...

  3. 技术实践丨GaussDB(DWS)运维管理功能“升级”的原理和使用

    摘要:本文将详细介绍GaussDB(DWS)重要运维管理功能"升级"的原理和使用. 运维管理模块是任何软件产品最基础和重要的一部分.是软件产品的门户,也是用户接触和使用软件产品的和 ...

  4. 可视化拖拽组件库一些技术要点原理分析(三)

    本文是可视化拖拽系列的第三篇,之前的两篇文章一共对 17 个功能点的技术原理进行了分析: 编辑器 自定义组件 拖拽 删除组件.调整图层层级 放大缩小 撤消.重做 组件属性设置 吸附 预览.保存代码 绑 ...

  5. 可视化拖拽组件库一些技术要点原理分析(二)

    本文是对<可视化拖拽组件库一些技术要点原理分析>[1]的补充.上一篇文章主要讲解了以下几个功能点: 1.编辑器2.自定义组件3.拖拽4.删除组件.调整图层层级5.放大缩小6.撤消.重做7. ...

  6. 可视化拖拽组件库一些技术要点原理分析

    本文已获得原作者的独家授权,有想转载的朋友们可以在后台联系我申请开白哦! PS:欢迎掘友们向我投稿哦,被采用的文章还可以送你掘金精美周边! 本文主要对以下技术要点进行分析: 编辑器 自定义组件 拖拽 ...

  7. react hooks使用_如何使用Hooks将React类组件转换为功能组件

    react hooks使用 by Balaganesh Damodaran 通过Balaganesh Damodaran 如何使用Hooks将React类组件转换为功能组件 (How to conve ...

  8. 服务器负载均衡的基本功能和实现原理

    负载均衡设备作为纵跨网络2-7层协议的设备,往往放置在网络设备和应用设备的连接处,对工程师在网络和应用基本知识方面的要求远高于其他设备,所以我们要在基本功能的理解上下更多的功夫.负载均衡设备还有另外一 ...

  9. Kubernetes各组件的功能

    Kubernetes各组件的功能 1.kubectl kubectl是Kubernetes官方提供的命令行工具CLI,用户可以通过命令行的方式与Kubernetes API Server进行操作,通信 ...

最新文章

  1. 自动驾驶产业链全梳理
  2. c++生成nurbs曲面文件_使用曲面细分丰富原始多边形
  3. jQuery基础---filter()和find()
  4. 阿里BCG重磅报告《人工智能,未来致胜之道》
  5. (Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]
  6. linux服务安装框架,CentOS7安装经典Web架构:LAMP
  7. 卷积神经网络之 - Alexnet
  8. 使用PyTorch来进展不平衡数据集的图像分类
  9. 提高服务器响应时间,如何提高服务器qps
  10. Docker 三剑客之 Docker Swarm
  11. Excel下的数据挖掘:学生成绩统计分析实战之一分三率和离均率
  12. 第三次作业(尤心心)
  13. 初识ActiveMQ
  14. power 相关:(二)功耗的分析 —— power compiler
  15. 关于Windows 7下的DEP(数据执行保护)
  16. VS+QT——二维码生成(使用nayuki第三方库):从建工程开始
  17. 计算机管理系统验收报告,管理信息系统验收报告
  18. [技巧]用js生成日志文件、获取ip。
  19. UseCase中include和extend的区别
  20. 云徙科技CEO包志刚:数字化锻造企业韧性

热门文章

  1. “云上电视台”解决方案在成都发布
  2. IBM MQ监控方法
  3. datetime,time计算时间差
  4. [轉貼] 华中科技大学校长李培根在2010届毕业典礼上的演讲全文
  5. 发布v1.0.0.0 酷袋
  6. xamarin Android 截屏,xamarin开发android收集的一些工具
  7. 归并排序及其复杂度分析
  8. python特训营-**常用设计模式**
  9. kindle dx 不能登录amazon store的解决方法
  10. 电脑桌面图标和文件按下鼠标左键无法无法拖动解决方法