Spring Cloud 框架集成了feign,它可以通过声明注解的方式来实现远程调用。feign的调用分为以下几个步骤
1. 通过注解@EnableFeignCleints注解开启FeignCleint,将相关bean进行扫描并注册feign
2. 使用@FeignCleint注解,按照相应规则实现接口,添加程序启动后,会扫描所有有@FeignCleint的类,并将这些信息注入到ioc容器中,
注入时从FeignClientFactoryBean.class获取FeignClient
该接口定义了一个远程服务feign-test,其中接口testApi是通过注解getMapping来指定远程调用的路径,Feign 将根据注解生成代理对象,调用代理对象方法时将触发远程调用。
整个调用流程如下
综上,feign作为远程调用的一种实现方式,它封装了Http调用流程,更加符合面向接口化,更适合面向接口化的变成习惯。
需要说明的是,feign的http客户端支持三种框架,HttpClient、OKHttp,HttpURLConnection,其中,apache提供的httpClient性能较好,也方便使用,在开发过程中,我们可以通过在全局配置文件种加入配置(yml格式)开启feign对httpclient的依赖。
feign:
httpclient:
enabled: true