springboot装配、⾯向切⾯编程、RxJava响应式编程的知识等等,我们剖析下主体脉络。
分析⼊⼝:@EnableCircuitBreaker注解激活了熔断功能,那么该注解就是Hystrix源码追踪的⼊⼝.
- @EnableCircuitBreaker注解激活熔断器
- 查看EnableCircuitBreakerImportSelector类
- 继续关注⽗类 SpringFactoryImportSelector
spring.factories⽂件内容如下
会注⼊org.springframework.cloud.netflflix.hystrix.HystrixCircuitBreakerConfifiguration
关注切⾯:com.netflflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect
重点分析环绕通知⽅法
GenericCommand中根据元数据信息重写了两个很核⼼的⽅法,⼀个是run⽅法封装了对原始⽬标⽅法的调⽤,另外⼀个是getFallBack⽅法它封装了对回退⽅法的调⽤另外,在GenericCommand的上层类构造函数中会完成资源的初始化,⽐如线程池GenericCommand —>AbstractHystrixCommand—>HystrixCommand—>AbstractCommand
接下来回到环绕通知⽅法那张截图
进⼊execute执⾏这⾥
另外,我们观察,GenericCommand⽅法中根据元数据信息等重写了run⽅法(对⽬标⽅法的调⽤),getFallback⽅法(对回退⽅法的调⽤),在RxJava处理过程中会完成对这两个⽅法的调⽤。