首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Feign 基本使用

Feign 基本使用

作者头像
码客说
发布于 2019-10-21 09:23:12
发布于 2019-10-21 09:23:12
1.7K00
代码可运行
举报
文章被收录于专栏:码客码客
运行总次数:0
代码可运行

前言

​ 在开发 Spring Cloud 微服务的时候,我们知道,服务之间都是以 HTTP 接口的形式对外提供服务的,因此消费者在进行调用的时候,底层就是通过 HTTP Client 的这种方式进行访问。

​ 当然我们可以使用JDK原生的 URLConnection、Apache 的 HTTP Client、Netty 异步 Http Client,Spring 的 RestTemplate 去实现服务间的调用。

​ 但是最方便、最优雅的方式是通过 Spring Cloud Open Feign 进行服务间的调用 Spring Cloud 对 Feign 进行了增强,使 Feign 支持 Spring Mvc 的注解,并整合了 Ribbon 等,从而让 Feign 的使用更加方便。

Feign 概述

什么是 Feign

  Feign 是一个声明式的 Web Service 客户端。它的出现使开发 Web Service 客户端变得很简单。使用 Feign 只需要创建一个接口加上对应的注解,比如:@FeignClient 注解。 Feign 有可插拔的注解,包括 Feign 注解和 AX-RS 注解。Feign 也支持编码器和解码器,Spring Cloud Open Feign 对 Feign 进行增强支持 Spring Mvc 注解,可以像 Spring Web 一样使用 HttpMessageConverters 等。

  Feign 是一种声明式、模板化的 HTTP 客户端。在 Spring Cloud 中使用 Feign,可以做到使用 HTTP 请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问 HTTP 请求。接下来介绍一下 Feign 的特性,具体如下:

  • 可插拔的注解支持,包括 Feign 注解和AX-RS注解。
  • 支持可插拔的 HTTP 编码器和解码器。
  • 支持 Hystrix 和它的 Fallback。
  • 支持 Ribbon 的负载均衡
  • 支持 HTTP 请求和响应的压缩。Feign 是一个声明式的 WebService 客户端,它的目的就是让 Web Service 调用更加简单。它整合了 Ribbon 和 Hystrix,从而不需要开发者针对 Feign 对其进行整合。Feign 还提供了 HTTP 请求的模板,通过编写简单的接口和注解,就可以定义好 HTTP 请求的参数、格式、地址等信息。Feign 会完全代理 HTTP 的请求,在使用过程中我们只需要依赖注入 Bean,然后调用对应的方法传递参数即可。

Feign 入门案例

此处以调用 Github API 查询服务为例。

引入依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

启动类加入如下注解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** 开启 Feign 扫描支持 */
@EnableFeignClients

Feign 接口编写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @Description:使用 Feign 访问 Github 查询 API
 */
@FeignClient(name = "github-client", url = "https://api.github.com")
public interface GitHubFeign {

    @RequestMapping(
            value = "/search/repositories",
            method = RequestMethod.GET,
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE
    )
    String searchRepo(@RequestParam("q") String q);

}

Controller

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @Description:使用 Feign 访问 Github 查询 API
 */
@RestController
@RequestMapping(
        value = "/github",
        produces = MediaType.APPLICATION_JSON_UTF8_VALUE
    )
public class GitHubController {

    @Resource
    private GitHubFeign gitHubFeign;

    @RequestMapping(
            value = "/search/repositories",
            method = RequestMethod.GET
    )
    String searchRepo(@RequestParam("q") String q) {
        return gitHubFeign.searchRepo(q);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FeignClient注解及参数
  FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上
HUC思梦
2022/05/11
9.6K0
使用Spring Cloud Feign上传文件
最近经常有人问Spring Cloud Feign如何上传文件。有团队的新成员,也有其他公司的兄弟。本文简单做个总结—— 早期的Spring Cloud中,Feign本身是没有上传文件的能力的(1年之前),要想实现这一点,需要自己去编写 Encoder 去实现上传。现在我们幸福了很多。因为Feign官方提供了子项目feign-form ,其中实现了上传所需的 Encoder 。 注:笔者测试的版本是Edgware.RELEASE。Camden、Dalston同样适应本文所述。 加依赖 <dependency
用户1516716
2018/04/03
1.8K0
FeignClient注解及参数
FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上
hbbliyong
2019/05/25
21.3K0
SpringCloud入门(五)-服务消费者(Feign)
Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,Feign 支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,并和 Eureka 结合,默认实现了负载均衡的效果(所以说服务消费者一般使用Feign)
故里
2020/11/25
1.5K0
史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
个人博客纯净版:https://www.fangzhipeng.com/springcloud/2018/08/03/sc-f3-feign.html
方志朋
2022/05/08
2570
springCloud - 第4篇 - 消费者调用服务 ( Feign )
2. spring Initializr - module SDK 选择自己的 JDK ,其余的可以不用填写,next。
微风-- 轻许--
2019/08/01
5400
Spring Cloud(二)《服务提供与负载均衡调用 Eureka》
本章节提供一个基于Eurka的服务注册中心,两个服务提供者之后分别使用Ribbon、Fegin方式进行调用,测试负载均衡。
小傅哥
2020/07/14
5270
Spring Cloud(二)《服务提供与负载均衡调用 Eureka》
微服务精通之Feign原理解析
经过微服务精通之Ribbon原理解析的学习,我们了解到了服务消费者获取服务提供者实例的过程,都是通过RestTemplate来实现的,而且,都是模板化操作。那spring cloud是否有哪个组件可以通过注解或者配置的方式,来简化这个过程?答案是有的,就是Feign。
全栈程序员站长
2022/11/09
1.2K0
微服务精通之Feign原理解析
Feign-声明式java Http客户端
Feign 是Netfilx开源的一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign
kl博主
2018/04/13
4.1K0
[Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用
上一节我们使用了Ribbon(基于Http/Tcp)进行微服务的调用,Ribbon的调用比较简单,通过Ribbon组件对请求的服务进行拦截,通过Eureka Server 获取到服务实例的IP:Port,然后再去调用API。本节课我们使用更简单的方式来实现,使用声明式的Web服务客户端Feign,我们只需要使用Feign来声明接口,利用注解来进行配置就可以使用了,是不是很简单?实际工作中,我们也只会用到Feign来进行服务之间的调用(大多数)。接下来,我们来实例操作一把。
Isaac Zhang
2019/09/11
3690
[Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用
玩转SpringCloud(F版本) 二.服务消费者(2)feign
上一篇博客讲解了服务消费者的ribbon+restTemplate 模式的搭建,此篇文章将要讲解服务消费者feign模式的搭建,这里是为了普及知识 平时的项目中两种消费模式选择其一即可
房上的猫
2019/01/24
5750
玩转SpringCloud(F版本)   二.服务消费者(2)feign
SpringCloud:Feign实现微服务之间相互请求
在Spring Cloud中,Feign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得更简单。使用Feign,我们可以简单地创建一个接口并注解。它具有可插拔的注解支持,包括Feign注解和JAX-RS注解。
IT_陈寒
2023/12/13
3860
SpringCloud:Feign实现微服务之间相互请求
微服务之SpringCloud架构第三篇——服务调用及Feign介绍和使用
Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便。 它具有可插拔注释支持,包括Feign注解和JAX-RS注解、Feign还支持可插拔编码器和解码器、Spring Cloud增加了对Spring MVC注释的支持,并HttpMessageConverters在Spring Web中使用了默认使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载平衡的http客户端。
leehao
2025/02/11
2690
微服务之SpringCloud架构第三篇——服务调用及Feign介绍和使用
Java学习笔记—总所周知的微服务架构SpringCloud中Feign
Feign 是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign.
慕容千语
2019/06/13
4880
微服务服务间调用组件Feign使用介绍、原理、优化技巧
Feign是一个声明式的Web Service客户端。它让微服务之间的调用变得更简单。Feign具有可插拔式的注解支持,包括Feign 注解和JAX-RS注解。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注解的支持,并且也支持Spring WebFlux。
青山师
2023/10/17
10.9K0
史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)
方志朋
2017/12/29
7230
SpringCloud Feign
版权声明:本文为博主原创文章,未经博主允许不得转载。
DencyCheng
2018/12/13
1.4K0
Spring Cloud(三)《应用服务快速失败熔断降级保护 Hystrix》
在互联网开发中经常会听到雪崩效应,比如某明星发一些状态某猿就要回去加班了!那么为了应对雪崩我们经常会进行服务扩容、添加缓存、优化流程但往往突发的事件依然有击穿缓存、应用负载、数据库IO、网络异常等等带来的风险,所以一些常见的做法有服务降级、限流、熔断,在逐步恢复系统可用率来保护系统。
小傅哥
2020/07/14
8880
Spring Cloud(三)《应用服务快速失败熔断降级保护 Hystrix》
spring cloud服务间调用之feign
在微服务架构盛行的年代,我们将一个大型的系统,拆解成各个服务,要完成一个业务逻辑,就可能需要,调用不同服务。比如订单服务调用会员服务。当然我们可以使用JDK自带的URLConnection,或者Apache的Http Client来调用,但是最为优雅的使用feign。
丁D
2022/08/12
1K0
spring cloud服务间调用之feign
Spring Cloud(四)《服务响应性能成功率监控 Hystrix》
Hystrix Dashboard | 断路器仪表盘,Hystrix 依赖服务一段时间窗内的请求调用情况来判断并操作断路器的链接和熔断状态保护系统快速失败服务降级,而这些请求情况的指标信息都是 HystrixCommand 和 HystrixObservableCommand 服务实例在执行过程中记录的重要指标信息,它们除了 Hystrix 断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以 “滚动时间窗” 与 “桶” 结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用,Hystrix Dashboard 就是这些指标内容的消费者之一。
小傅哥
2020/07/14
5730
Spring Cloud(四)《服务响应性能成功率监控 Hystrix》
推荐阅读
相关推荐
FeignClient注解及参数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档