Spring Cloud Feign
Spring Cloud Feign 是一套基于 Netflix Feign 实现的声明式服务调用客户端。它使得编写 Web 服务客户端变得更加简单。我们只需要通过创建接口并用注解来配置它既可完成对 Web 服务接口的绑定。它具备可插拔的注解支持,包括 Feign 注解、JAX-RS 注解。它也支持可插拔的编码器和解码器。Spring Cloud Feign 还扩展了对 Spring MVC 注解的支持,同时还整合了 Ribbon 和 Eureka 来提供均衡负载的 HTTP 客户端实现。
分布式应用早在十几年前就开始出现,各自的应用运行在各自的 tomcat,jboss 一类的容器中,他们之间的相互调用变成了一种远程调用,而实现远程调用的方式很多。按照协议划分,可以有 RPC,Webservice,http。不同的框架也对他们有了各自的实现,如 dubbo(x),motan 就都是 RPC 框架,本文所要讲解的 Feign 便可以理解为一种 http 框架,用于分布式服务之间通过 Http 进行接口交互。说他是框架,有点过了,可以理解为一个 http 工具,只不过在 spring cloud 全家桶的体系中,它比 httpclient,okhttp,retrofit 这些 http 工具都要强大的多。
入门
先用一个简单的例子,看看如何在项目中使用 Feign。示例项目使用 maven 多 module 构建,采用 springcloud 的 Dalston.SR1 版本