Spring事務是我們日常工作中經常使用的一項技術,Spring提供了編程、注解、aop切面三種方式供我們使用Spring事務,其中編程式事務因為對代碼入侵較大所以不被推薦使用,注解和aop切面的方式可以基于需求自行選擇,我們以注解的方式為例來分析Spring事務的原理和源碼實現。
首先我們簡單看一下Spring事務的使用方式,配置:
在需要開啟事務的方法上加上@Transactional注解即可,這里需要注意的是,當標簽在不指定transaction-manager屬性的時候,會默認尋找id固定名為transactionManager的bean作為事務管理器,如果沒有id為transactionManager的bean并且在使用@Transactional注解時也沒有指定value(事務管理器),程序就會報錯。當我們在配置兩個以上的標簽時,如下:
這時第一個會生效,也就是當我們使用@Transactional注解時不指定事務管理器,默認使用的事務管理器是transactionManager1,后文分析源碼時會具體提到這些注意點。下面我們開始分析Spring的相關源碼,首先看一下對標簽的解析,這里需要讀者對Spring自定義標簽解析的過程有一定的了解,筆者后續也會出相關的文章。
*** 由于分析Spring源碼內容較多,請在WiFi環境,點擊下方閱讀原文 ***