【Spring Cloud】使用 Feign 优雅地调用 HTTP API:Feign 详细介绍、使用步骤

前言:本文主要内容学习自教程视频:https://www.bilibili.com/video/BV1jJ411S7xr?p=13

1 Feign 详细介绍

Feign 是声明式的 web service 客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Feign 是 Netflix 开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、通过面向接口和注解的方式、优雅地调用HTTP API。

Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。只需要创建一个接口,然后添加注解即可。

Feign 的出现的原因 ,主要是社区中大家都习惯面向接口编程。这个是很多开发人员的规范。Feign 的作用是替代 RestTemplate,性能比较低,但是可以使代码可读性很强。

Feign 通过接口的方法调用Rest服务 ( 之前是Ribbon+RestTemplate,可参考文章:【Spring Cloud】详解 Ribbon:负载均衡、多种负载均衡算法的选取、自定义负载均衡算法 ),该请求发送给Eureka服务器 (例如,发送请求:http://MICROSERVICECLOUD-PROVIDER-DEPT/dept/list)通过Feign直接找到服务接口,由于在进行服务调用的时候融合了Ribbon技术,所以也支持负载均衡作用( Feign 其实不是做负载均衡的,负载均衡是Ribbon的功能,Feign 只是集成了Ribbon而已,但是负载均衡的功能还是Feign 内置的Ribbon再做,而不是Feign )。

因此 Feign 的出现,使得调用微服务访问有了两种方法:1. 微服务名字 【使用 Ribbon】2. 接口和注解 【使用 Feign 】

2 Feign 能做什么

在这里插入图片描述

3 Feign 集成了 Ribbon

在这里插入图片描述

4 Feign 使用步骤

(注:本文章的项目部分是根据此系列的前几篇文章中的项目来循序渐进地改动过来的,因此,下文中提到的另外几个模块项目,可去之前文章中查看,太占篇幅,不可能全列出来,或直接去看本文开头链接中的视频教程)

1、参考本系列文章之前的使用 Ribbon 的服务消费者模块 springcloud-consumer-dept-ribbon-80(或是 8002 模块,视频教程里的服务消费者是 80 模块,我自己练习时用的是 8002 模块,这里由于我一开始的随意,导致了后来写文章的各种别扭,就先说明一下吧)

2、新建springcloud-consumer-dept-feign-80

  • 修改主启动类名称
  • 将springcloud-consumer-dept-80的内容都拷贝到 feign项目中
  • 删除myrule文件夹
  • 修改主启动类的名称为 DeptConsumerFeign80

3、springcloud-consumer-dept-feign-80修改pom.xml , 添加对Feign的支持。

<!--Feign相关-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>

4、修改springcloud-api工程,同样在 pom 中添加上述 Feign 的依赖,并新建一个Service包
在这里插入图片描述
编写接口 DeptClientService,并增加新的注解@FeignClient

(其实这里既然有请求映射了,那应该属于 Controller 层,但此教程里可能也是为了侧重微服务中“服务”这词的,因此,将此服务提供者模块直接写成在服务层处理映射)
在这里插入图片描述
5、在消费者模块 springcloud-consumer-dept-feign-80 工程修改Controller,添加上一步新建的DeptClientService
在这里插入图片描述

6、microservicecloud-consumer-dept-feign工程修改主启动类,开启Feign使用

(个人认为这个包扫描不用单独指定,多余)
在这里插入图片描述
7、测试(注:三个注册中心模块是本系列上个文章中的项目内容,可去前几篇文章查看)
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超周到的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值