OpenFeign简介

不管是 RestTemplate 工具,还是 WebClient 工具,虽然对 HTTP 请求处理的封装已经足够完善,但是开发人员在使用它们编码时依然需要处理一些细节问题,如请求 URL、请求参数、等待响应结果等。这种做法不够简洁,而且把底层的编码暴露出来,不利于团队间协作,因此需要一种更简单、更优雅的方式。

OpenFeign 组件由 Spring Cloud 官方维护并提供给开发人员,相较于之前的请求处理过程,OpenFeign 组件的封装度更高,更加符合面向接口编程的规范。OpenFeign 的前身是 SpringCloud Netflix 套件中的 Feign 组件。FeignNetflix 套件中的一个轻量级 RESTfulHTTP 服务客户端,内置了 Ribbon 负载均衡器来完成服务通信流程。OpenFeignSpring CloudFeign 组件的基础上迭代出的功能更强大的组件。

比如,前面章节中使用 RestTemplate 工具进行服务通信的一段代码:

String result = restTemplate.getForObject(SERVICE_URL + "/goodsServiceTest", String.class);

使用 OpenFeign 组件后,发起远程服务调用的代码风格就变成了下面这样:

String result = goodsService.test(13);

这种代码风格是不是和本地方法调用很像?这就是 OpenFeign 组件给服务通信编码所带来的影响,集成 OpenFeign 并进行简单的配置后,就会让发起 HTTP 请求看起来像调用本地方法一样简单。当然,只是从代码风格上看起来像,底层依然是服务通信的机制,不能将远程调用与本地调用混淆。