依托于微服务的东风,feign作为接口调用框架也被越来越多地应用到项目中。
它封装了HttpClient的内部实现细节,让我们可以像在内部调用方法一样调用其他服务的接口方法,比HttpClient方便很多,毕竟自己写HttpClient还要考虑连接、断连、异常等各种非业务场景, Hutool 的HttpGet/HttpPost也封装了一层HttpClient,也可以使用,但是没有feign更加的轻量级,对象.方法的调用形式让你甚至不知道调用的是第三方接口,只当是普通的对象方法调用。
Feign的内部实现依赖于Spring的AOP和动态代理,通过声明式注解@FeignClient在Spring容器中注入该对象,再通过Proxy代理实例,能在内部进行HTTP请求的封装,以及发送HTTP 请求。