二、branch transaction
2022-05-17 20:19:09 2 举报
AI智能生成
seata源码解析--分支事务注册、提交、回滚
作者其他创作
大纲/内容
该类实现接口BeanPostProcessor
SeataDataSourceBeanPostProcessor
实现接口DataSource
继承类AbstractDataSourceProxy
实现接口Resource
StatementProxy
AbstractConnectionProxy#createStatement()
PreparedStatementProxy
AbstractConnectionProxy#prepareStatement(String sql)
ConnectionProxy#register():
AbstractUndoLogManager#flushUndoLogs(ConnectionProxy cp)
持久化前置镜像、后置镜像
ConnectionProxy#report(boolean commitDone)
// 在全局事务中,执行全局事务提交 ConnectionProxy# processGlobalTransactionCommit();
// 获取到了全局锁 ConnectionProxy#processLocalCommitWithGlobalLocks();
// 普通事务提交 ConnectionProxy#targetConnection.commit();
ConnectionProxy#doCommit()
DataSourceProxy
调用父类构造方法:AbstractDataSourceProxy#AbstractDataSourceProxy(DataSource targetDataSource)
DataSourceProxyHolder#putDataSource(DataSource dataSource)
DataSourceProxy dataSourceProxy = DataSourceProxyHolder.get().putDataSource((DataSource) originBean);
SeataDataSourceBeanPostProcessor#proxyDataSource(Object originBean),改方法中生成一个数据源的代理类:DataSourceProxy,并缓存到dataSourceProxyMap中
实现方法postProcessAfterInitialization,对原生的DataSOurce生成代理类:DataSourceProxy
实习方法postProcessBeforeInitialization
RM添加如下配置:seata: enabled: true enable-auto-data-source-proxy: true
springboot自动配置类SeataAutoConfiguration
二、seata源码RM之branch transaction注册
收藏
收藏
0 条评论
回复 删除
下一页