spring的事務相對於資料庫的事務有自己的特點,這種特性叫做事務傳播機制。事務傳播機制定義了事務在多個方法的呼叫中是如何傳遞的。如下幾種:
事務傳播行為型別
說明propagation_required
如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是預設的事務傳播行為
propagation_supports
支援當前事務,如果當前沒有事務,就以非事務方式執行。
propagation_mandatory
使用當前的事務,如果當前沒有事務,就丟擲異常。
propagation_requires_new
新建事務,如果當前存在事務,把當前事務掛起。(乙個新的事務將啟動,而且如果有乙個現有的事務在執行的話,則這個方法將在執行期被掛起,直到新的事務提交或者回滾才恢復執行。)
propagation_not_supported
以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
propagation_never
以非事務方式執行,如果當前存在事務,則丟擲異常。
propagation_nested
如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作。(外層事務丟擲異常回滾,那麼內層事務必須回滾,反之內層事務並不影響外層事務)
目前想到的乙個場景:假如乙個賬戶扣款,並插入操作日誌,不論扣款成功與否,都要記錄日誌。並且不能因為插入日誌異常而導致賬戶扣款回滾。所以插入日誌的事務傳播行為可以定義為propagation_requires_new。
spring 事務傳播行為
事務傳播行為種類 spring在transactiondefinition介面中規定了7種型別的事務傳播行為,它們規定了事務方法和事務方法發生巢狀呼叫時事務如何進行傳播 事務傳播行為型別 事務傳播行為型別 說明propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙...
Spring事務傳播行為
你們說一下什麼是傳播行為,有幾種傳播行為,是不是有7種傳播行為,你們看一段 就知道傳播行為是怎麼用的,它是產生在 多個事務中,我定義乙個 class userservice 這個行為你不會不知道,行為是基礎知識,userdao.add 是不是這樣的,我在add方法上加上註解,logservice.a...
Spring事務傳播行為
什麼是spring事務傳播行為?事務傳播行為用來描述由某乙個事務傳播行為修飾的方法被巢狀進另乙個方法的時,事務如何傳播。假設servicea 中方法a 呼叫 serviceb中方法 b b被事務修飾 那麼會有兩種情況 方法a有事務,方法b有事務 方法a沒有事務,方法b有事務 spring中的事務傳播...