OpenFeign简介
不管是 RestTemplate 工具,还是 WebClient 工具,虽然对 HTTP 请求处理的封装已经足够完善,但是开发人员在使用它们编码时依然需要处理一些细节问题,如请求 URL、请求参数、等待响应结果等。这种做法不够简洁,而且把底层的编码暴露出来,不利于团队间协作,因此需要一种更简单、更优雅的方式。
OpenFeign 组件由 Spring Cloud 官方维护并提供给开发人员,相较于之前的请求处理过程,OpenFeign 组件的封装度更高,更加符合面向接口编程的规范。OpenFeign 的前身是 SpringCloud Netflix 套件中的 Feign 组件。Feign 是 Netflix 套件中的一个轻量级 RESTful 的 HTTP 服务客户端,内置了 Ribbon 负载均衡器来完成服务通信流程。OpenFeign 是 Spring Cloud 在 Feign 组件的基础上迭代出的功能更强大的组件。
比如,前面章节中使用 RestTemplate 工具进行服务通信的一段代码:
String result = restTemplate.getForObject(SERVICE_URL + "/goodsServiceTest", String.class);
使用 OpenFeign 组件后,发起远程服务调用的代码风格就变成了下面这样:
String result = goodsService.test(13);
这种代码风格是不是和本地方法调用很像?这就是 OpenFeign 组件给服务通信编码所带来的影响,集成 OpenFeign 并进行简单的配置后,就会让发起 HTTP 请求看起来像调用本地方法一样简单。当然,只是从代码风格上看起来像,底层依然是服务通信的机制,不能将远程调用与本地调用混淆。