文章目录
一、产品原理图
二、Netflix Feign还是Open Feign?
在这个时间节点上,很多人对这“两种”Feign傻傻分不清楚,不知有何区别和联系,本文将给与告知。 首先需要明确:他俩是属于同一个东西,Feign属于Netflix开源的组件。针对于差异性,下面分这几个方面展开做出对比
1、GAV坐标差异
<dependency>
<groupId>com.netflix.feign</groupId>
<artifactId>feign-core</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-core</artifactId>
</dependency>
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月发布,然后一直持续发布到现在(未停止)
从以上3个特点其实你可以很清楚的看到两者的区别和联系,简单的理解:Netflix Feign仅仅只是改名成为了Open Feign而已,然后Open Feign项目在其基础上继续发展至今。
9.0版本之前它叫Netflix Feign,自9.0版本起它改名叫Open Feign了。
三、spring-cloud-starter-feign还是spring-cloud-starter-openfeign?
他俩的差异类似于上述描述的差异,也从几个方面说明:
1、GAV坐标差异:
<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>
2、发版历史:
- spring-cloud-starter-feign:2015.3发布1.0.0版本,2019.5.23发布器最后一个版本1.4.7.RELEASE
值得注意的是,从1.4.0.RELEASE开始,它的1.4.x的发版轨迹完全同下的1.4.x的发版轨迹 - spring-cloud-starter-openfeign:2017.11发布其首个版本,版本号为:1.4.0.RELEASE。现在仍持续更新中,当下最新版为2.2.1.RELEASE
说明:1.4.7.RELEASE是整个Spring Cloud1.x关于Feign方面的最终版本,2.x版本还在持续维护更新中
注意:老的spring-cloud-starter-feign 从1.2.0.RELEASE开始 已放弃Netflix feign而全面使用更新的Open Feign版本,而spring-cloud-starter-openfeign更是和Netflix Feign已经没有关系了。
对于版本,可粗略的理解为:spring-cloud-starter-openfeign是为Spring Cloud2.x准备的,只不过维持了一段时间的对1.x的兼容。而spring-cloud-starter-feign是专为Spring Cloud1.x服务。
核心API包名:
Spring Cloud的大版本升级具有向下不兼容性,这也体现在了Feign上:
-
@FeignClient注解:
1.x版本包名是org.springframework.cloud.netflix.feign.FeignClient,所在Jar是spring-cloud-netflix-core
说明:这里的1.x不仅仅指的feign,还包括openfeign的1.4.x版本哦2.x版本包名是org.springframework.cloud.openfeign.FeignClient,所在Jar是spring-cloud-openfeign-core
@EnableFeignClients注解: