JAVA-每日一面 2022-01-19

Spring 事務(wù)底層原理

a、劃分處理單元——IOC

由于 spring 解決的問題是對單個數(shù)據(jù)庫進行局部事務(wù)處理的,具體的實現(xiàn)首相用 spring中的 IOC 劃分了事務(wù)處理單元。并且將對事務(wù)的各種配置放到了 ioc 容器中(設(shè)置事務(wù)管理器,設(shè)置事務(wù)的傳播特性及隔離機制)。

b、AOP 攔截需要進行事務(wù)處理的類

Spring 事務(wù)處理模塊是通過 AOP 功能來實現(xiàn)聲明式事務(wù)處理的,具體操作(比如事務(wù)實行的配置和讀取,事務(wù)對象的抽象),用 TransactionProxyFactoryBean 接口來使用 AOP功能,生成 proxy 代理對象,通過 TransactionInterceptor 完成對代理方法的攔截,將事務(wù)處理的功能編織到攔截的方法中。讀取 ioc 容器事務(wù)配置屬性,轉(zhuǎn)化為 spring 事務(wù)處理需要的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(TransactionAttributeSourceAdvisor),轉(zhuǎn)化為TransactionAttribute 表示的數(shù)據(jù)對象。

c、對事物處理實現(xiàn)(事務(wù)的生成、提交、回滾、掛起)

spring 委托給具體的事務(wù)處理器實現(xiàn)。實現(xiàn)了一個抽象和適配。適配的具體事務(wù)處理器:DataSource 數(shù)據(jù)源支持、hibernate 數(shù)據(jù)源事務(wù)處理支持、JDO 數(shù)據(jù)源事務(wù)處理支持,JPA、JTA 數(shù)據(jù)源事務(wù)處理支持。這些支持都是通過設(shè)計PlatformTransactionManager、bstractPlatforTransaction 一系列事務(wù)處理的支持。 為常用數(shù)據(jù)源支持提供了一系列的 TransactionManager。

PlatformTransactionManager 實現(xiàn)了 TransactionInterception 接口,讓其與TransactionProxyFactoryBean 結(jié)合起來,形成一個 Spring 聲明式事務(wù)處理的設(shè)計體系。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容