??基于最新Spring 5.x,详细介绍了Spring @Async异步任务机制的实现原理!主要是AsyncAnnotationBeanPostProcessor创建异步任务代理以及AnnotationAsyncExecutionInterceptor执行异步任务增强的逻辑。
??此前我们讲解了Spring @Async异步任务的入口源码,主要是<task:annotation-driven/>标签、<task:executor/>标签以及@EnableAsync注解
的源码解析,无论是<task:annotation-driven/>标签还是@EnableAsync注解
,最终的目的就是向容器注入AsyncAnnotationBeanPostProcessor后处理器
。
??现在,我们从AsyncAnnotationBeanPostProcessor入手,进一步讲解Spring异步任务的具体处理流程!
文章目录
- 1 AsyncAnnotationBeanPostProcessor异步任务后处理器
- 1.1 setBeanFactory回调
- 1.1.1 AsyncAnnotationAdvisor
- 1.1.1.1 buildAdvice构建通知
- 1.1.1.1.1 configure配置拦截器
- 1.1.1.1.1.1 getDefaultExecutor获取默认执行器
- 1.1.1.2 buildPointcut构建切入点
- 1.1.2 setAsyncAnnotationType设置异步任务注解
- 1.2 postProcessAfterInitialization执行代理
- 1.2.1 isEligible是否合格
- 1.2.2 prepareProxyFactory准备代理工厂
- 2 AnnotationAsyncExecutionInterceptor异步任务拦截器
- 2.1 invoke执行异步增强
- 2.1.1 determineAsyncExecutor确定执行器
- 2.1.1.1 getExecutorQualifier获取执行器限定符
- 2.1.1.2 findQualifiedExecutor查找执行器
- 2.1.1.3 get获取默认执行器/异常处理器
- 2.1.2 doSubmit异步执行
- 2.1.3 handleError异常处理
- 3 总结
cs