微服务架构-Feign声明式调用 源码解读

* 源码分析
*
* Feign是一个伪java http客户端。Feign不做任何请求处理,Feign通过处理注解生成Request模板,从而简化Http api开发。开发人员可以使用注解
* 定制Request API模板。在发送http request之前,feign通过处理注解的方式替换掉Request模板中的参数,生成真正的request交给java hppt客户端
* 去处理。这样开发人员不用关心http请求本身,只需要关注Feign注解模板开发
* 1.程序启动时先去找到是否@EnableFeignClients注解开启包扫描,
* 2.然后去扫描@FeignClient修饰的接口类
* 3.将接口名和注解信息一起取出赋给BeanDefinitionBuilder再得到BeanDefinition注入到ioc容器中。
* 4.当调用接口中的方法时,会被拦截,生成RequestTemplate对象,
* 5.然后RequestTemplate对象生成http的request对象;
* 6.request对象交给Client去处理,网络请求框架可以是httpURLConnnection,HttpClient和okhttp
* 最后Client被封装到LoadBalanceClient类结合Ribbon做均衡负载

 

 *
 * @FeignClient
 * 注解用于创建声明式API接口,该接口是RESTful风格的,feign被设计成插拔式,可注入其他组件和Feign一起使用最典型的就是Ribbon负载均衡组件。
 *源码:
 * FeignClient被@Target({ElementType.TYPE})修饰,表明作用于接口
 * @Retention(RetentionPolicy.RUNTIME) 表明该注解会在class字节码文件中存在,在运行时通过反射得到
 * @Documented 表示该注解被包含在javadoc之中
 *name和value一样,是被调用服务的ServiceID;configuration指明配置类,默认的配置类为FeignClientsConfiguration
 * 缺省情况下,这个类默认注入了Decoder,Encoder,Contrack等配置的bean;fallback为配置熔断器的配置类
 *
 */
/**
 * feign使用Client组件,默认使用httpURLConnnection来实现网络请求
 * 也可以使用HttpClient和okhttp实现
 * 方式:
 * 配置feign.httpClient.enabled=ture;
 * 加入相关依赖
 */

用法

/**
 * 1.依赖    spring-cloud-starter-feign
 *
 * 2.注解 @EnableFeignClients
 *
 * 3.创建调用interface
 *   注解@FeignClient(value = "Eureka-Client",configuration = FeignConfig.class)
 *           value:调用服务名
 *           configuration:调用配置类
 */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值