前言
Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。
环境搭建
----新建springcloud-consumer-dept-fegin子项目,和springcloud-consumer-dept-80基本一样。
① 新子项目的pom添加fegin依赖
② 在公共子项目springcloud-api中新建DeptClientService, 修改对应的pom文件
springcloud-api的pom文件要添加fegin依赖
③ 修改springcloud-consumer-dept-fegin相关类
DeptController_consumer修改使用fegin调用接口
DeptConsumer80_Fegin_App启动类添加注解
测试
先启动三个Eureka,再启动8001 8002 8003服务提供者,最后启动fegin微服务
测试路径:http://localhost/consumer/dept/list
Feign集成了Ribbon
利用Ribbon维护了microservicecloud-Dept的服务列表信息,并且通过轮询实现了客户端的负载均衡,而与Ribbon不同的是,通过feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用
Feign通过接口的方法,调用Rest服务 (之前是Ribbon+RestTemplate)
该请求发送给Eureka服务器(http://MICROSERVICECLOUD-DEPT/dept/list),通过Feign直接找到服务接口,由于在进行服务调用的时候融合了Ribbon技术,所以也支持负载均衡作用;