【簡介】
當事務方法被另乙個事務方法呼叫時,必須指定事務應該如何傳播。例如:方法可能繼續在現有事務中執行,也可能開啟乙個新事務,並在自己的事務中執行。
事務的傳播行為可以由傳播屬性指定。spring定義了
7種類傳播行為。
事務傳播屬性可以在@transactional註解的propagation屬性中定義。
【測試】
1) . 說明
①required傳播行為
當bookservice的
purchase()
方法被另乙個事務方法
checkout()
呼叫時,它缺省會在現有的事務內執行。這個預設的傳播行為就是
required
。因此在
checkout()
方法的開始和終止邊界內只有乙個事務。這個事務只在
checkout()
方法結束的時候被提交,結果使用者一本書都買不了。
②. requires_new傳播行為
表示該方法必須啟動乙個新事務,並在自己的事務內執行。如果有事務在執行,就應該先掛起它。
【補充】
在spring 2.x事務通知中,可以像下面這樣在
元素中設定傳播事務屬性。
事務傳播行為
事務傳播行為型別 說明propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。propagation supports 支援當前事務,如果當前沒有事務,就以非事務方式執行。propagation mandatory 使用...
事務的傳播行為
所謂事務的傳播行為是指,如果在開始當前事務之前,乙個事務上下文已經存在,這時有七個屬性可以指定該事務的執行行為。1.propagation required 如果當前存在事務,則加入該事務 如果當前沒有事務,則建立乙個新的事務。這是預設值 2.propagation supports 如果當前存在事...
spring 事務傳播行為
事務傳播行為種類 spring在transactiondefinition介面中規定了7種型別的事務傳播行為,它們規定了事務方法和事務方法發生巢狀呼叫時事務如何進行傳播 事務傳播行為型別 事務傳播行為型別 說明propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙...