Spring Cloud Feign【源码篇】Feign Hystrix Support

友情提示:如果你对 Feign 不是很了解,请先阅读 Feign 如何进行服务间调用

相关版本:Spring Boot 2.1.5.RELEASE 、Spring Cloud Greenwich.SR

回顾

Feign 如何进行服务间调用 一文中,提到了Feign 自动配置类 FeignAutoConfiguration

在之前提到,Feign 对象进行实例化的时候会调用 Targeter targeter = get(context, Targeter.class); 来进行获取。

Targeter 有两种实现: DefaultTargeterHystrixTargeter

Feign 如何进行服务间调用 中我们以 DefaultTargeter 进行展开。而在 Feign Hystrix Support 中,通过查看自动配置类 FeignAutoConfiguration 信息,在有 Hystrix 相关依赖情况下,Feign Targeter 的实现为 HystrixTargeter

Feign Hystrix Support

Spring Cloud 官网相关案例信息

回顾熟悉一下 Feign 的使用

在这里插入图片描述

源码分析 HystrixTargeter 配置下的 Feign Client 代理对象

聚焦 Feign 自动配置类 FeignAutoConfiguration

public class FeignAutoConfiguration {
   

	@Configuration
	@ConditionalOnMissingClass("feign.hystrix.HystrixFeign")
	protected static class DefaultFeignTargeterConfiguration {
   

		@Bean
		@ConditionalOnMissingBean
		public Targeter feignTargeter() {
   
			return new DefaultTargeter();
		}

	}

	@Configuration
	@ConditionalOnClass(name = "feign.hystrix.HystrixFeign")
	protected static class HystrixFeignTargeterConfiguration {
   

		@Bean
		@ConditionalOnMissingBean
		public Targeter feignTargeter() {
   
			return new HystrixTargeter();
		}

	}
}

从自动配置类 FeignAutoConfiguration 中,我们可以很直观的看到,当我们在依赖中引入 feign-hystrixhystrix 时,Feign 会采用 HystrixTargeter作为其 Targeter 的实现类。

Feign Hystrix 功能支持,由 HystrixTargeter#target 实例化对象时生成一系列HystrixCommand 相关配置。

提示:Feign Client 的加载可以分为三步。HystrixTargeter#target 的调用属于第二步:Feign Client 实例化代理对象。

聚焦 HystrixTargeter#target

class HystrixTargeter implements Targeter {
   
	@Override
	public <T> T target(FeignClientFactoryBean factory, Feign.Builder feign,
			FeignContext context, Target.HardCodedTarget<T> target) {
   
		// 1、判定是否引入依赖 feign-hystirx 
		if (!(feign instanceof feign.hystrix.HystrixFeign.Builder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值