Feign与OpenFeign
# Feign与OpenFeign
其实OpenFeign的使用方式就是@FeignClients注解加上Spring MVC注解的方式书写“伪装”接口函数,然后在业务需要的地方像使用本地方法一样调用接口函数。
实际上在OpenFeign出现之前,有一个阶段,开发者经常使用的是Netflix Feign。二者在使用方式、版本集成方面还是有一些差异性。本篇就为大家介绍一下。
# 一、Netlix Feign
- Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端
- Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。
- Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务
- Feign本身不支持Spring MVC的注解,它有一套自己的注解。Feign的注解和用法请参考官方文档:https://github.com/OpenFeign/feign
下图中注释掉的部分是Feign的注解书写方式,没有注释掉的注解是Spring MVC的注解方式。显然,Spring MVC的注解我们使用起来更加统一、方便、常用。所以下文中的注释掉的这种注解的书写方式了解即可,已经没有必要学习使用了。
因为Feign在一些方面与Spring MVC常用习惯的兼容性不够好,Feign又是属于netflix的产品,该公司对于Spring Cloud社区的支持也逐渐减弱。所以Spring Cloud社区基于各种原因在Feign的基础上开发了OpenFeign。
# 二、 Netflix Feign还是Open Feign?
1、maven坐标差异:
<dependency>
<groupId>com.netflix.feign</groupId>
<artifactId>feign-core</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-core</artifactId>
</dependency>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
2、官网地址差异:https://github.com/Netflix/feign
和https://github.com/OpenFeign/feign
。不过现在访问https://github.com/Netflix/feign
前者已经被重定向到了后者上。
3、发版历史:
- Netflix Feign:
1.0.0
发布于2013.6,于2016.7月发布其最后一个版本8.18.0
- Open Feign:首个版本便是
9.0.0
版,于2016.7月发布,然后一直持续发布到现在(未停止)
可以简单的理解:Netflix Feign
仅仅只是改名成为了Open Feign
而已,然后Open Feign项目在其基础上继续发展至今。9.0版本之前它叫Netflix Feign,自9.0版本起它改名叫Open Feign了。
# 二、Spring Cloud Feign还是Spring Cloud OpenFeign?
1、maven坐标差异:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
2、发版历史:
- spring-cloud-starter-feign:2015.3发布1.0.0版本,2019.5.23发布器最后一个版本
1.4.7.RELEASE
- spring-cloud-starter-openfeign:2017.11发布其首个版本,版本号为:
1.4.0.RELEASE
。现在仍持续更新中,当下最新版为2.2.1.RELEASE
对于版本,可粗略的理解为:
spring-cloud-starter-openfeign
是为Spring Cloud2.x准备的,只不过维持了一段时间的对1.x的兼容。- 而
spring-cloud-starter-feign
是专为Spring Cloud1.x服务。
上次更新: 2022/06/13, 18:30:58