当前位置: 代码迷 >> 综合 >> [Feign]学习log
  详细解决方案

[Feign]学习log

热度:141   发布时间:2023-10-11 11:14:45.0

文章目录

  • 一、产品原理图
  • 二、Netflix Feign还是Open Feign?
    • 1、GAV坐标差异
    • 2、官网地址差异
    • 3、发版历史
  • 三、spring-cloud-starter-feign还是spring-cloud-starter-openfeign?
    • 1、GAV坐标差异:
    • 2、发版历史:
  • 四、原生Feign的注解介绍及使用示例


一、产品原理图

[Feign]学习log

二、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已经没有关系了。
[Feign]学习log
对于版本,可粗略的理解为: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注解:
[Feign]学习log

四、原生Feign的注解介绍及使用示例

参考:
参考一
参考二

  相关解决方案