Spring Cloud学习(4) - Feign声明式调用

一、什么是Feign?

Feign采用声明式的API接口的风格,将java http客户端绑定在其内部,并且内部集成了hystrix和Ribbon。让使用者可以很轻松的实现http请求过程,并提供了负载均衡以及服务不可用时的订制响应信息。

二、Feign的工作原理

通过在启动类加上@EnableFeignClients注解,开启feign功能。

项目启动时,如果有该注解,就会进行包扫描,具体的扫包路径默认为启动类所在包下,也可以通过@EnableFeignClients的basePackages参数指定扫包路径。

扫包的工作流程如下:

  1. 程序会通过包扫描将有@FeignClient注解修饰的接口连同接口名和注解的信息一起取出,赋给BeanDefinitionBuilder;
  2. 根据BeanDefinitionBuilder得到BeanDefinition;
  3. 将BeanDefinition注入IoC容器中。

Feign是一个伪Java Http客户端,Feign不做任何的请求处理,而是通过处理注解生成Request模板,从而简化了Http API 的开发。我们可以使用注解的方式定制Request API模板。在发送HttpRequest 请求之前, Feign通过处理注解的方式替换掉Request 模板中的参数,生成真正的Request,并交给Java Http客户端去处理。整个过程中,我们只需要关注注解模板的开发,使得http请求变得简单和容易理解。

Feign的网络请求是默认HttpURLConnnection来实现的,同时支持了OkHttp和HttpClient,只需要引入对应的pom依赖,就能切换默认的网络请求:

<!-- httpClient -->
<dependency>
    <groupId>com.netflix.feign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>RELEASE</version>
</dependency>

<!-- OkHttp -->
<dependency>
    <groupId>com.netflix.feign</groupId>
    <artifactId>feign-okhttp</artifactId>
    <version>RELEASE</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值