介绍
我最近使用了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.feign
是Spring 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/