Spring事務(wù)是我們?nèi)粘9ぷ髦薪?jīng)常使用的一項技術(shù),Spring提供了編程、注解、aop切面三種方式供我們使用Spring事務(wù),其中編程式事務(wù)因為對代碼入侵較大所以不被推薦使用,注解和aop切面的方式可以基于需求自行選擇,我們以注解的方式為例來分析Spring事務(wù)的原理和源碼實現(xiàn)。
首先我們簡單看一下Spring事務(wù)的使用方式,配置:

在需要開啟事務(wù)的方法上加上@Transactional注解即可,這里需要注意的是,當標簽在不指定transaction-manager屬性的時候,會默認尋找id固定名為transactionManager的bean作為事務(wù)管理器,如果沒有id為transactionManager的bean并且在使用@Transactional注解時也沒有指定value(事務(wù)管理器),程序就會報錯。當我們在配置兩個以上的標簽時,如下:

這時第一個會生效,也就是當我們使用@Transactional注解時不指定事務(wù)管理器,默認使用的事務(wù)管理器是transactionManager1,后文分析源碼時會具體提到這些注意點。下面我們開始分析Spring的相關(guān)源碼,首先看一下對標簽的解析,這里需要讀者對Spring自定義標簽解析的過程有一定的了解,筆者后續(xù)也會出相關(guān)的文章。
*** 由于分析Spring源碼內(nèi)容較多,請在WiFi環(huán)境,點擊下方閱讀原文 ***