1.概述
在本教程中,我们将描述Spring Cloud Netflix Feign和Spring Cloud OpenFeign之间的区别。
2.Feign
Feign通过提供注解支持,使我们能够仅使用接口来实现客户端,从而使编写Web服务客户端变得更加容易。
Feign最初是由Netflix创建并发布的,这是其Netflix OSS项目的一部分。今天,它是一个开源项目。
2.1 Spring Cloud Netflix Feign
Spring Cloud Netflix将Netflix OSS产品集成到Spring Cloud生态系统中。其中包括Feign,Eureka,Ribbon和许多其他工具和实用程序。但是,Feign获得了自己的Spring Cloud Starter,以允许仅访问Feign。
2.2 OpenFeign
最终,Netflix决定停止在内部使用Feign并停止其开发。由于这一决定,Netflix在一个名为OpenFeign的新项目下将Feign完全转移到了开源社区。
幸运的是,它继续得到开源社区的大力支持,并且看到了许多新功能和更新。
2.3 Spring Cloud OpenFeign
与其前身相似,Spring Cloud OpenFeign将前身项目集成到Spring Cloud生态系统中。
方便地,此集成增加了对Spring MVC注释的支持,并提供了相同的HttpMessageConverters。
让我们将Spring Cloud OpenFeign中的Feign实现与使用Spring Cloud Netflix Feign的实现进行比较。
3.依存关系
首先,我们必须在我们的pom.xml
文件中spring-cloud-starter-feign
和spring-cloud-dependencies
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<versionId>1.4.7.RELEASE</versionID>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
请注意,该库仅适用于Spring Boot 1.4.7或更早版本。因此,我们的pom.xml
必须使用任何Spring Cloud依赖项的兼容版本。
4.使用Spring Cloud Netflix Feign实施
现在,我们可以使用@EnableFeignClients
@FeignClient
任何接口的组件扫描。
对于我们使用Spring Cloud Netflix Feign项目开发的每个示例,我们都使用以下导入:
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
所有功能的实现对于旧版本和新版本都是完全相同的。
5.使用Spring Cloud OpenFeign实施
相比之下,我们的Spring Cloud OpenFeign教程包含与Spring Netflix Feign实施相同的示例。
唯一的区别是,我们的进口货来自不同的包装:
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
其他所有内容都是相同的,由于这两个库之间的关系,这不足为奇。
6.比较
从根本上讲,Feign的这两种实现是相同的。我们可以将这归因于Netflix Feign是OpenFeign的始祖。
但是,Spring Cloud OpenFeign包括Spring Cloud Netflix Feign中不可用的新选项和功能。
最近,我们获得了对Micrometer , Dropwizard Metrics , Apache HTTP Client 5 , Google HTTP client等的支持。
7.结论
本文比较了OpenFeign和Netflix Feign的Spring Cloud集成。像往常一样,您可以在GitHub上找到Spring Cloud OpenFeign和Netflix Feign的资源。
0 评论