这篇文章算是对之前系列的增强,将spring启动流程、@Configuration配置加载分析 、feign构建与调用全流程分析、hystrix源码分析 整体用两张图片串联起来。
feign 全流程分析
图片中主要分为以下几步:
-
从项目启动;
-
refresh刷新上下文
-
解析
-
举例feign的装配,也可以看hystrix的装配(feign通过EnableAutoConfiguration自动装配),hystrix装配(用EnableAutoConfiguration和EnableCircuitBreaker),将FeignClient注解修饰的类包装成对应类型的BeanDefinition
-
加载
-
举例feign的加载
-
通过getBean 执行对应BeanDefinition的回调,通过解析注解RequestMapping生成SynchronousMethodHandler,最后通过动态代理方法名生成对应的DefaultMethodHandler
-
使用,通过@Autowire 根据类型获取
-
hystrix处理包装成HystrixCommand(后续HystrixCommand的执行看hystrix的分析)
-
RequestTemplate包装
-
feign的负载均衡获取server
-
执行
hystrix分析里
-
从hystrix装配,扫描到@Aspect
-
请求执行
-
通过@HystrixCommand 拦截
-
包装成HystrixCommand
-
包装成HystrixCommand后如何执行
建议结合图片,自己翻代码追踪一下,然后再断点跑一下,会有很清晰的理解。图片中已将整体流程串联,以及在关键流程里使用的对象在哪里创建都用线串了起来,
文章中的图片可能不太清晰。
关注微信公众号5ycode,获取高清图片。
文章评论