TX-LCN5.0.2分布式事务框架源码分析-关键线索罗列-txc部分

1、注解TxcTransaction
2、在其注解接口附近查找aop配置:TransactionAspect
3、runTransaction是在执行事务业务代码时的包装逻辑
4、transactionServiceExecutor.transactionRunning(info);
5、获取本地分布式事务控制器 loadDTXLocalControl找到TxcRunningTransaction
6、根据注解和切面配置,resolvePropagationState返回是DTXPropagationState.JOIN
7、DTXServiceExecutor dtxLocalControl.doBusinessCode(info),直接线索中断
8、回到刚才切面所在的包,发现还有DataSourceAspect,对数据库连接进行了替换,非常重要,先看看连接的接口有什么东西,想想我们的jdbc写法也是弄一个连接,然后调用其中的各种方法
9、
DTXResourceWeaver 对获取db连接进行了封装,其中有执行sql的相关动作改写
txLcnBeanHelper.loadTransactionResourceProxy(transactionType);
找到transaction_txc TxcTransactionResourceProxy执行的proxyConnection,继续进入方法
10、查看ConnectionWrapper其中的commit rollback等对原始的数据库连接进行了替换,有用到jdbcEventListener,分析listener
11、找到ConnectionHelper其中注入的CompoundJdbcEventListener,这个bean在类名上已经进行了标记,里面用的P6spyJdbcEventListener实际上是TxcJdbcEventListener
12、随便看个update 63行看看拦截的处理sqlExecuteInterceptor.preUpdate((Update) statement);粗看其中的代码,有一段前置准备,最后96行txcService.resolveUpdateImage(updateImageParams);
13、粗看resolveUpdateImage其中代码,就是对影响范围进行分析,然后保留undo数据(195行方法内部162行)
14、到此基本我们可以验证之前的txc的理论,刚才部分分析比较粗略,大家有时间可以自己细看

posted @   剑握在手  阅读(888)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
返回顶部↑
点击右上角即可分享
微信分享提示