剖析主体脉络涉及到: springboot装配、面向切面编程、RxJava响应式编程的知识等等
EnableCircuitBreaker剖析
1、分析入口
添加了@EnableCircuitBreaker注解激活了熔断功能,那么该注解就是Hystrix 源码追踪的入口.
1、首先通过导入的Selector,将注解类作为泛型传入父类,父类对其进行获取泛型类的全限定类名,并根据全限定类名获取Spring.factories中的配置(是通过此方式进行加载,而不是自动配置),加载的这个类HystrixCircuitBreakerConfiguration类里面含有切面,引入了切面 类,切面有切点,对所有添加熔断注解的切点进行环绕通知,获取注解的目标方向的元数据信息,Method method = getMethodFromTarget(joinPoint);
封装成MetaHolder,实例化成可执行器,(期间有进行初始化很多东西,如父类的父类的父类中有进行线程池的初始化),还有CommandExecutor执行器中进行同步操作,同时GenericCommand类中,有对一个run方法和fackball方法,去执行具体的原方法。
更加具体还得翻源码