Feign的使用

来源:互联网 发布:win8如何更改网络类型 编辑:程序博客网 时间:2024/06/05 15:20

链接 : spring社区   http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign

             github    https://github.com/OpenFeign/feign

            简书  http://www.jianshu.com/p/46ef7e378aa0


原理:通过@EnableFeignClient注解开启@FeignClient

           再具体接口上添加@FeignClient注解,并添加配置类和server名称

           程序启动后,spring会自动扫描所有注解,并构建Bean添加到IOC容器中

          当接口方法被调用时,请求会被拦截,之后jdk通过代理根据请求参数生成一个RequestTemplate(http请求的模板),并调用方法执行这个模板获得http请求的response

          执行的过程是,由RequestTemplate生成Request,并交给Client处理

          Client组件是用来发送请求的客户端,Client可以由HttpUrlConnection,HttpClient, OkHttp实现,默认为HttpUrlConnection。

          我们可以通过更改Feign的配置来自己定制Client,Client被封装到LoadBalanceFeignClient实现负载均衡


配置:对于每一个被@FeignClient注解了的接口,我们可以添加自己定制的配置类修改默认的配置项。自定义的配置会覆盖默认配置项。为了防止配置被扫描导致所有接口都被            覆盖,实现的配置类最好放在不同的package中。

           默认实现的配置Bean有: Decoder,  Encoder, Logger, Contract  Feign.Builder

           可自己添加的配置Bean有: Logger.Level , Retryer, ErrorDecoder, Request.Options, Collection<RequestInterceptor>              

           各配置项的解释:http://blog.csdn.net/zheng0518/article/details/65635357        


Feign与Ribbon

Feign自动实现Ribbon的负载均衡。实现原理是当负责发送请求的Client准备就绪后,会被封装到LoadBalancerFeignClient类中。

这个类实现了Ribbon的负载均衡。

原创粉丝点击