首页 > 其他分享 >feign之一 ---

feign之一 ---

时间:2022-11-13 12:23:26浏览次数:73  
标签:feign 之一 Spring Feign --- 注解 Ribbon 客户端

1:Feign是什么

Feign是一个声明式的Web服务客户端,使得编写Web服务客户端变得非常容易,只需要创建一个接口,然后在上面添加注解即可。官网:https://github.com/OpenFeign/feign

2:Feign能干什么

  • Feign旨在使编写Java Http客户端变得更容易。
  • 前面在使用Spring Cloud Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。
  • Spring Cloud Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Spring Cloud Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它,即可完成对服务提供方的接口绑定,简化了使用Spring cloud ribbon时,自动封装服务调用客户端的开发量。
  • Spring Cloud Feign具备可插拔的注解支持,包括Feign注解和JAX-RS注解,同时还扩展了Spring MVC的注解支持。同时还集成Ribbon和Eureka,以在使用Feign时提供Http客户端的负载均衡;集成了Hystrix以提供熔断、降级等功能。
  • 另外,对于Feign自身的一些主要组件,比如说编码器和解码器等,都支持可插拔的方式,在有需要的时候可以方便地扩展和替换它们。

3:Feingn特性

  • 可插拔的注解支持,包括Feign注解和JAX-RS注解
  • 支持可插拔的HTTP编码器和解码器
  • 支持Hystrix和它的Fallback
  • 支持Ribbon的负载均衡
  • 支持HTTP请求和响应的压缩

4: Feign集成

4.1:加入依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

4.2:启动类

需要添加开启feign的注解,示例如下:

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients

4.3:定义接口,示例如下:

@FeignClient(value = "userService")
public interface UserService {
	@RequestMapping(value = "/userServiceProvider", method = RequestMethod.GET)
	String sayHiFromClientOne(@RequestParam(value = "name") String name);
}

4.4:配置文件

基本类似于Ribbon的配置, application.properties示例如下:

eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
server.port=8770
spring.application.name=service-feign

4.5:调用服务的Controller类

  • Feign集成了Ribbon,依然是利用了Ribbon维护了userService的服务列表信息,并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,通过feign只需要定义服务绑定接口,以声明式的方法,优雅而简单的实现了服务调用
  • Spring Cloud Feign只支持spring mvc 3.x系列的, springmvc4.0出现的一系列注解比如@GetMapping,@PostMapping,@PutMapping等等是Feign是不支持的

标签:feign,之一,Spring,Feign,---,注解,Ribbon,客户端
From: https://www.cnblogs.com/zxl1027820187/p/16885734.html

相关文章

  • 力扣35(java&python)-搜索插入位置(简单)
    题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法......
  • ACM-ICPC World Finals 2022 L Where Am I? 题解
    题目链接我们要干的事情其实是对于输入矩阵中的每个位置,求出从它开始至少走几步形成的序列能跟所有位置走同样步数形成的序列不同。注意到每个位置至少走\(200^2\)步就能......
  • 周日1040C++班级2022-11-13 数据类型-字符型char
    数据类型-char字符型特点:由单引号’’构成,且长度为1,在格式化中字符用%c来表示正确的字符:‘a’ ‘ ’ ‘#’ ‘1’错误的字符:’aa’ ‘##’ ‘’’’ascii码表......
  • 2022-2023-1 20221301 《计算机基础与程序设计》第十一周学习总结
    2022-2023-120221301《计算机基础与程序设计》第十一周学习总结作业信息这个作业属于哪个课程<班级的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFA......
  • ACM-ICPC World Finals 2022 L Where Am I? 题解
    题目链接我们要干的事情其实是对于输入矩阵中的每个位置,求出从它开始至少走几步形成的序列能跟所有位置走同样步数形成的序列不同。注意到每个位置至少走\(200^2\)步就能......
  • 2022.11.12 C.The Seven-Sparkling-Star Card Game(大模拟)
    ProblemTheSeven-Sparkling-StarCardGame(七星卡牌)游戏是Illumina_矿业无限游戏公司的最新力作。基本游戏规则:对战双方各持\(n\)张卡牌,其中\(n\)是\(7\)的......
  • harbor 部署-与高可用
    harbor部署-与高可用复制功能的目标1.首先要两个节点上都要部署harbor仓库2.然后让他们相互的复制,达到镜像统一一致3.最后使用keepalived,都部署上,达到高可用性1)前......
  • 剑指 Offer 59 - I. 滑动窗口的最大值 - 力扣(Leetcode)
    剑指Offer59-I.滑动窗口的最大值-力扣(Leetcode)一.分析方法一:数组长度为1e5,k的大小为1e4,因此直接暴力计算会TLE。我们可以思考一个更复杂的问题:询问任意区间中的......
  • 第七章-概念结构设计
    7.1数据库设计概述:数据库设计一般定义:数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储......
  • 4-高频基础题
    一、状态码状态码含义1xxInformational(信息性状态码)接受的请求正在处理2xxSuccess(成功状态码)请求正常处理完毕3xxRedirection(重定向)需要进行附加操......