1. 程式人生 > >Spring事務傳播行為

Spring事務傳播行為

常見 一個 tro red 支持 span ever pri ron

Spring事物傳播行為

Spring中事務的定義:

Propagation(key屬性確定代理應該給哪個方法增加事務行為。這樣的屬性最重要的部份是傳播行為。)有以下選項可供使用:

PROPAGATION_REQUIRED:如果當前有事務,就用當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。//如果外層方法有事務,就使用外層方法的事務。如果外層方法沒有事務,則使用內層方法的事務。

PROPAGATION_SUPPORTS:支持當前事務,如果當前沒有事務,就以非事務方式執行。//如果外層方法沒有事務,就會以非事務進行執行。

PROPAGATION_MANDATORY:支持當前事務,如果當前沒有事務,就拋出異常。 //如果外層方法沒有事務,內層方法有事務會報錯。

PROPAGATION_REQUIRES_NEW:新建事務,如果當前存在事務,把當前事務掛起。 //如果外層方法有事務,內層方法的事務類型為(PROPAGATION_REQUIRES_NEW) ,則執行內層方法事務。如果外層在調用內層方法結束之後方法出錯,不會影響內層事務做的操作。

PROPAGATION_NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。//如果外層方法有事務,就會以非事務方式執行。

PROPAGATION_NEVER:以非事務方式執行,如果當前存在事務,則拋出異常。//如果外層方法有事務,內部事務也有事務類型為(PROPAGATION_NEVER),則報錯。

默認傳播行為為REQUIRED

Spring事務傳播行為