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
请求看起来像调用本地方法一样简单。当然,只是从代码风格上看起来像,底层依然是服务通信的机制,不能将远程调用与本地调用混淆。