TX-LCN5.0.2分佈式事務框架源碼分析-關鍵線索羅列-txc部分

一、註解TxcTransaction
二、在其註解接口附近查找aop配置:TransactionAspect
三、runTransaction是在執行事務業務代碼時的包裝邏輯
四、transactionServiceExecutor.transactionRunning(info);
五、獲取本地分佈式事務控制器 loadDTXLocalControl找到TxcRunningTransaction
六、根據註解和切面配置,resolvePropagationState返回是DTXPropagationState.JOIN
七、DTXServiceExecutor dtxLocalControl.doBusinessCode(info),直接線索中斷
八、回到剛纔切面所在的包,發現還有DataSourceAspect,對數據庫鏈接進行了替換,很是重要,先看看鏈接的接口有什麼東西,想一想咱們的jdbc寫法也是弄一個鏈接,而後調用其中的各類方法
九、
DTXResourceWeaver 對獲取db鏈接進行了封裝,其中有執行sql的相關動做改寫
txLcnBeanHelper.loadTransactionResourceProxy(transactionType);
找到transaction_txc TxcTransactionResourceProxy執行的proxyConnection,繼續進入方法
十、查看ConnectionWrapper其中的commit rollback等對原始的數據庫鏈接進行了替換,有用到jdbcEventListener,分析listener
十一、找到ConnectionHelper其中注入的CompoundJdbcEventListener,這個bean在類名上已經進行了標記,裏面用的P6spyJdbcEventListener其實是TxcJdbcEventListener
十二、隨便看個update 63行看看攔截的處理sqlExecuteInterceptor.preUpdate((Update) statement);粗看其中的代碼,有一段前置準備,最後96行txcService.resolveUpdateImage(updateImageParams);
1三、粗看resolveUpdateImage其中代碼,就是對影響範圍進行分析,而後保留undo數據(195行方法內部162行)
1四、到此基本咱們能夠驗證以前的txc的理論,剛纔部分分析比較粗略,你們有時間能夠本身細看sql

相關文章
相關標籤/搜索