Spring Cloud Feign

Feign 是 Netflix 开发的声明式 Web 服务客户端,采用了声明式 API 接口的风格,将 Java Http 客户端绑定到它的内部。Feign 的首要目标是将 Java Http 客户端调用过程变得简单。

是什么?

下面是关于OpenFeign的一段官方介绍:

Feign is a declarative web service client. It makes writing web service clients e asier. To use Feign create an interface and annotate it. It has pluggable annotat ion support including Feign annotations and JAX-RS annotations. Feign also suppor ts pluggable encoders and decoders. Spring Cloud adds support for Spring MVC anno tations and for using the same HttpMessageConverters used by default in Spring We b. Spring Cloud integrates Eureka, Spring Cloud CircuitBreaker, as well as Spring Cloud LoadBalancer to provide a load-balanced http client when using Feign.

这段话说的是:OpenFeign 是一个显示声明式的WebService客户端。使用OpenFeign能让编写Web Service客户端更加简单。使用时只需定义服务接口,然后在上面添加注解。OpenFeign也支持可拔插式的编码和解码器。spring cloud对feign进行了封装,使其支持MVC注解和HttpMessageConverts。和eureka(服务注册中心)和ribbon组合可以实现负载均衡。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求,非常的方便。

能做什么?

OpenFeign的设计宗旨式简化Java Http客户端的开发。Feign在restTemplate的基础上做了进一步的封装,由其来帮助我们定义和实现依赖服务接口的定义。在OpenFeign的协助下,我们只需创建一个接口并使用注解的方式进行配置(类似于Dao接口上面的Mapper注解)即可完成对服务提供方的接口绑定,大大简化了Spring cloud Ribbon的开发,自动封装服务调用客户端的开发量。 OpenFeign集成了Ribbon,利用ribbon维护了服务列表,并且通过ribbon实现了客户端的负载均衡。与ribbon不同的是,通过OpenFeign只需要定义服务绑定接口且以申明式的方法,优雅而简单的实现了服务调用。