Transactional事务请求时序图
2022-12-28 14:07:06 2 举报
Transactional事务请求时序图
作者其他创作
大纲/内容
AdvisedSupport
10.调用invokeWithinTransaction准备执行具体的事务方法
10.2 调用determineTransactionManager获取事务管理器PlatformTransactionManager OrDatasourceTransactionManager
ReflectiveMethodInvocation
10.6.1 判断txInfo.transactionAttribute != null && txInfo.transactionAttribute.rollbackOn(ex)commit Or rollback
10.11 结束请求事务提交或回滚成功
CglibAopProxy
10.4 调用prepareTransactionInfo准备事务状态并将事务状态bindToThread本地线程变量
10.5 调用commitTransactionAfterReturning 提交事务
Cglib代理专门用于生成代理链创建代理的核心方法
6.构造TransactionInterceptor集合并生成代理类
实现事务控制的最核心的对象继承自TransactionAspectSupport
10.9 返回调用结果
4.返回targetSource到CglibAopProxy
TransactionInterceptor
TransactionAspectSupport
实现了MethodInvocation借助反射实现代理对象的调用也即代理执行的真正刽子手递归调用拦截器链
事务请求
用于配置当前代理对象将增强(Adivsiors)转换成MethodInterceptor代理链
3.调用getTargetSource 获取目标资源(target object [DistLockServiceImpl])
7.发起proceed请求
2.调用intercept拦截请求
10.8 返回调用结果
9.调用AopUtils.isCglibProxy & AopUtils.getTargetClass来获取代理的对象
5.调用getInterceptorsAndDynamicInterceptionAdvice生成拦截请求链
10.10 返回调用结果
10.1 调用getTransactionAttributeSource获取事务属性
10.7 调用cleanupTransactionInfo解绑事务并从本地线程变量移除
1.事务请求
8.MethodInterceptor 代理对象的invoke方法
10.6 调用 completeTransactionAfterThrowing根据异常情况判断是提交事务还是回滚事务
控制事务回滚还是提交最底层核心
收藏
收藏
0 条评论
下一页