Spring的事務實現原理與傳播機制

2021-10-07 16:46:50 字數 1035 閱讀 9583

(1)在要開啟事務的方法上加@transactional註解;

(2)此時spring就會使用aop的思想,對你的這個方法在執行之前,先去開啟事務,執行完畢之後根據方法是否報錯,決定回滾或者提交事務。

1、事務傳播機制的概念,如:

@transactional

(propagation = propagation.required)

public

void

methoda()

@transactional

(propagation = propagation.required)

public

void

methodb()

方法a上加了transactional事務註解,方法b上也加了transactional事務註解;

當乙個事務方法去呼叫另乙個事務方法的時候,事務應該怎樣進行傳播?

2、事務的傳播級別

(1) propagation_required:如果存在乙個事務,則支援當前事務。如果沒有事務則開啟乙個新的事務。

(2)propagation_supports:如果存在乙個事務,支援當前事務。如果沒有事務,則非事務的執行。但是對於事務同步的事務管理器,propagation_supports與不使用事務有少許不同。

(3)propagation_mandatory:如果已經存在乙個事務,支援當前事務。如果沒有乙個活動的事務,則丟擲異常。

(4)propagation_requires_new:總是開啟乙個新的事務。如果乙個事務已經存在,則將這個存在的事務掛起。

(5)propagation_not_supported:總是非事務地執行,並掛起任何存在的事務。

(6)propagation_never:總是非事務地執行,如果存在乙個活動事務,則丟擲異常。

(7)propagation_nested:如果乙個活動的事務存在,則執行在乙個巢狀的事務中. 如果沒有活動事務, 則按transactiondefinition.propagation_required 屬性執行。

spring事務實現原理

如果你用過spring aop,那麼理解註解事務就十分簡單了。事務註解本質上實在事務方法加入乙個around切面,在方法開始前開始事務,在丟擲異常後回滾事務。使用簡單偽 可以簡單理解為 dowithtransaction catch exception ex spring transaction有各...

Spring事務實現方式

1.一種是使用xml實現事務 開發基本不用 transactional的所有可選屬性 propagation 用於設定事務傳播屬性。該屬性型別為 propagation 列舉,預設值為 propagation.required。isolation 用於設定事務的隔離級別。該屬性型別為 isolati...

MySQL事務實現原理

以上是sql 92標準中定義的四種隔離級別。在mysql中,預設的隔離級別是repeatable read 可重複讀 並且解決了幻讀問題。不可重複讀重點在於update和delete,而幻讀的重點在於insert insert update delete 快照讀和當前讀 鎖定讀一致性非鎖定讀假如乙個...