spring方法級事務在預設傳遞規則下傳遞失效

2021-09-22 01:29:03 字數 577 閱讀 4032

場景:springboot專案中,service層@transactional(預設傳遞方式)註解不同service的多個方法,實現在底層方法手動丟擲異常實現多個方法事務的同步。

偽**:

@transactional

void methoda(dataa)

@transactional

void mehtodb(datab)else

}class myexception extends exception

}

執行結果:

多次測試,結果methoda始終無法回滾。

解決辦法:

反思:spring原始碼有必要深入研究研究。

後續跟進:

2019.11.20

也可以手動設定回滾的規則,示例如下:

@transactional(norollbackfor = myexception.class)//丟擲指定異常不回滾

@transactional(rollbackfor = myexception.class)//丟擲指定異常回滾

spring預設事務異常處理

spring宣告式事務管理預設對非檢查型異常和執行時異常進行事務回滾,而對檢查型異常則不進行回滾操作。那麼什麼是檢查型異常什麼又是非檢查型異常呢?1 繼承自runtimeexception或error的是非檢查型異常 2 繼承自exception的則是檢查型異常 runtimeexception本身...

資料庫事務的隔離以及spring的事務傳播機制

資料庫的事務隔離 mysql innodb事務的隔離級別有四級,預設是 可重複讀 rr repeatable read oracle預設的是提交讀。rc 四個級別逐漸增強,每個級別解決乙個問題。spring的事務傳播機制 spring在transactiondefinition介面中規定了7種型別的...

spring 五個事務隔離級別和七個事務傳播行為

spring 在transactiondefinition介面中定義了五個不同的事務隔離級別 isolation default這是乙個platfromtransactionmanager預設的隔離級別,使用資料庫預設的事務隔離級別.另外四個與jdbc的隔離級別相對應 isolation read ...