1. 程式人生 > >Spring 事務管理的實現分析

Spring 事務管理的實現分析

1、Spring 事務管理實現的基本模型

在同一個 connection 裡,【開啟事務】->【執行method】->【回滾 OR 提交】

2、注意點

  • 執行緒安全,每個執行緒同一個資料來源只有一個connection 。當執行緒在執行一個有事務的方法時,通過資料來源去獲取connection。
  • 僅支援單個數據源的事務控制
  • spring 抽象層 AbsPlatformTransactionManager,通過模板方法,由子類實現具體的【begin Transaction】【rollBack】【commit】, 由第三方實現,例如:DataSourceTransactionManager 、HibernateTransactionManager
  • spring容器啟動時,注入了資料來源data source  
  • 最終實現的底層還是 java JDBC 的 connction 提供的方法實現,connection.createStatement(),cooncetion.commit(); connection.rollback().

3、設計類圖之設計模式

  • 常用的事務實現是 DataSourceTransactionManager.    


4、spring 如何知曉 【method】 添加了事務?

  1. 新增事務的方式: 註解配置事務以及【事務屬性,或事務定義】、xml 通過【pattern】模式匹配方式配置攔截點,同時配置了統一的需要的【事務屬性】,這裡暫不列舉。例如:xml 配置事務驅動註解,在程式碼中使用註解 @Transactional
  2. 下圖是【TransactionAspectSupport】 實現在事務中執行方法,也可能沒有建立事務。
  •  getTransactionAttribute(Method method, Class<?> targetClass) 獲取當前 method 的事務屬性。
  • 根據事務屬性實現【三步走策略】