介绍

我最近使用了netflix feign和功能区,这非常有用。

一个例子是:

@FeignClient(name = "ldap-proxy")
public interface LdapProxyClient  {
    @RequestMapping(path = "/ldap-proxy/v1/users/{userNameOrEMail}", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
    LdapUser search(@PathVariable("userNameOrEMail") String userNameOrEMail);
}

但是,在某些时候,我认为不必(对于现有的Web服务)手动编写所有这些定义,而是应该查看是否存在工具。

我偶然发现了https://github.com/swagger-api/swagger-codegen,发现其中有一些生成客户端的示例,例如https://github.com/swagger-api/swagger-codegen/tree/master/samples/client/petstore/java/feign

但是,当我仔细查看进口商品时,我注意到以下几点:
import feign.Feign;
另一方面,Netflix的开源解决方案具有程序包名称:org.springframework.cloud.netflix.feign

此外,我注意到两者都使用功能区(如果有的话),但是Netflix的表示法更加简洁,在后台发生了很多事情。例如。 @FeignClient注释类javadoc指出:



但是,在Feign.feign文档(位于https://github.com/OpenFeign/feign)中,我看到了:


> MyService api =
> Feign.builder().client(RibbonClient.create()).target(MyService.class,
> "https://myAppProd");

所以我的问题是:
  • 两者之间的历史/关系和区别是什么?
  • 各自的优缺点是什么?

  • 他们是完全不同的项目,没有关系,还是netflix只是派生/利用OpenFeign并将其修改为在其集成云解决方案之内?本质上,netflix是否只是从开源项目中获取并集成了Discovery,ribbon和feign等不同技术?

    最佳答案

    org.springframework.cloud.netflix.feignSpring Cloud Netflix项目的一部分,而Spring Cloud项目是documentation的一部分。

    Spring Cloud在后台使用OpenFeign。它扩展了它以支持Spring MVC注释,并通过自动配置为Spring Boot应用程序提供集成,使其成为Spring环境中的一等公民。

    the source code:



    请注意,在文档中有一个指向OpenFeign项目的链接。

    因此,如果您使用Spring Boot,那么使用Spring Cloud OpenFeign集成会更好,更轻松。

    另请参见ojit_a。

    关于java - netflix.feign和openfeign之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49823158/

    10-11 10:43