spring源碼深度解析-Spring源碼閱讀-Spring事務

        簡要說一下流程,有的細節略過或者簡化了。

        Spring事務其實是使用了Spring自定義標籤的解析功能和SpringAOP功能。

        Spring定義了一個自定義標籤,然後定義了這個標籤對應的Parser。這個parser裏面註冊了一個AutoProxyCreator,也註冊了一個Advisor(裏面包含一個Interceptor)。

        然後涉及Bean的加載過程,所有bean在創建時候都會包含一個流程,就是調用BeanPostProcessor的postProcessAfterInitialization方法。我們之前註冊的這個AutoProxyCreator就是BeanPostProcessor的一個實現,它的postProcessAfterInitialization方法其實是就是獲取增強然後對這個bean創建代理。那其中獲取到的增強就包括我們之前註冊的那個Advisor。這裏面有個判斷增強是否匹配的過程,怎麼標記我們需要增強的bean呢,就是加事務註解,包含事務屬性。有檢測到事務屬性,就說明這個bean需要這個增強。

        增強完了之後,就是實際調用到這個bean的方法的時候,實際上調用的是那個代理,那個代理實際上要調用我們之前提到的那個Interceptor的invoke方法。這個方法裏面,就是先創建事務,然後調用實際被增強的這個方法,然後異常處理包括回滾,然後提交事務。創建事務的流程是根據我們配置的事務屬性的傳播屬性,然後對應不同的回滾流程,也對應不同的提交流程。

        整個流程簡單地說完了。下面是看書時候整理的具體的圖可以參考一下。

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章