spring事務的傳播屬性是什麼?它會影響什麼?

程式猿新手_曹先生發表於2020-12-06
  1. 所謂spring事務的傳播屬性,就是定義在存在多個事務同時存在的時候,spring應該如何處理這些事務的行為。
  2. 什麼是事務傳播行為?
    事務傳播行為用來描述由某一個事務傳播行為修飾的方法被巢狀進另一個方法時,事務如何傳播?
    例如下面的程式碼:
@Transaction(Propagation=XXX)
public void methodA(){
    methodB();
    //doSomething
}

public void methodB(){
    //doSomething
}

methodA中存在事務,他又呼叫了methodB,methodB事務的一些特性由methodA決定,這是事務的傳播行為。
propagation_required:如果當前沒有事務,則建立一個事務,如果當前已經存在一個事務中,加入到這個事務中,這是最常見的方法。
propagation_supports:支援當前的事務,如果沒有當前事務,就以非事務方式執行。
propagation_mandatory:使用當前事務,如果沒有當前事務,則丟擲異常。
propagation_reguires_new:新建事務,如果當前存在事務,把當前事務掛起。

事務預設以propagation_required來隔離,內部只要有一個地方出錯,那麼整個事務都會回滾。
如果內部方法以propagation.required_new來隔離,那麼他會建立一個新的事務來隔離,即使失敗了,丟擲異常,並不會影響其他事務,以及外部的事務。
參考文件

相關文章