Spring框架Day09之事務傳播行為(詳解)

2021-10-11 22:48:29 字數 2069 閱讀 9971

如果有事務在執行,當前方法就在這個事務內執行,否則,就啟動乙個新的事務,並在自己的事務內執行

事務方法的巢狀,傳播行為可由傳播屬性決定。

required:先坐老王的車,老王翻車就g了。如果老王沒車就自己買一輛車。

requires_new:自己買一輛車,只允許存在自己一輛車,如果老王車也在,則暫時掛起老王的車。如果自己的車又出現問題,自己執行失敗。

多個方法同時使用requires_new:將老王的車掛起後,執行完自己的方法業務後,開啟老王的車繼續行駛

@transactional

(propagation= propagation.required)

/@transactional

(propagation= propagation.requires_new)

public

void

checkout

(string username,string isdn)

throws filenotfoundexception

@transactional

(propagation = propagation.required)

/@transactional

(propagation= propagation.requires_new)

public

void

updateprice

(string isbn,

int price)

@transactional

public

intgetprice

(string isbn)

@service

public

class

multservice

}

*

** 多事務

*/@test

public

void

test2()

throws filenotfoundexception

因為更改**updateprice()出現異常,事務全部回滾。

而如果只在結賬checkout中使用propagation=propagation.requires_new,則結賬不回滾,更改**回滾

而如果只在更改**updateprice()中使用propagation=propagation.requies_new,則結賬回滾,更改**因出現異常更改失敗。

而如果同時在checkout()和updateprice()中都使用propagation=propagation.requies_new,則結賬不回滾,更改**因出現異常更改失敗。

而如果同時在checkout()和updateprice()中都使用propagation=propagation.requied,且如果在multx()**現了錯誤,則都回滾(全在一輛車都翻了會滾了)

而如果在結賬中使用propagation=propagation.required,在更改**中使用propagation=propagation.requies_new,且如果在multx()**現了錯誤,則結賬因為被掛起無效無現象(回滾)而更改**方法中未出現異常但multx()大體事務**現了錯誤,導致只有更改**更改程度不回滾

multx()

// required

c(){}

} // requires_new

d()

e()} // requires_new

g(){}

}int i=10/0; (b成功,d整個分支全部成功)

}結論1:任何處崩,已經執行的requires_new都成功不崩。

如果是required,事務的屬性繼承於最大事務,在傳播行為下的timeout必須設定在原始父事務方法中,才會有超時異常。設定在其他地方等於沒設。

如果是requires_new,timeout就設定在當前事務方法就可。

required:將之前事務用的connection傳遞給當前方法使用

requires_new:這個方法直接使用新的connection

day09 多型總結

2019.07.09 day09 多型 判斷多型的四個原則 1.跨類且繼承 2.子類重寫長輩類的方法 3.子類物件賦值給長輩的引用 4.用長輩的引用打點呼叫方法 注意 能呼叫出那些方法取決於左邊類或介面的左邊 長輩類或長輩介面 呼叫方法的內容取決於等號右邊 如果重寫過,就執行子類重寫後方法的內容 如...

前端筆記day09

1 完 員列表的刪除功能 姓名姓別 刪除 2 vue的v for語法可以遍歷那些值,分別寫出遍歷不同值的 1 迭代數字 這是第 個p標籤 2 迭代data中的普通物件 3 迭代data中的陣列 3 文字敘述v model和v bind的差別 1 v bind動態繫結指令,預設情況下標籤自帶屬性的值是...

day09物件導向

類是對某一類事物的抽象描述,用於描述多個物件的共同特徵,它是物件的模板 而物件用於表現現實中該類事物的個體,它是類的例項 類是用於描述事物的,類中可以定義事物的屬性和行為 物件是通過描述的這個類,使用new關鍵字建立出來,通過物件可以呼叫該物件具體的屬性和功能 this關鍵字 用來區分成員變數和區域...