<tx:advice/> 設定

本節總結了可以使用 <tx:advice/> 標籤指定的各種事務設定。預設的 <tx:advice/> 設定如下:

  • 傳播設定 (propagation setting) 為 REQUIRED

  • 隔離級別為 DEFAULT

  • 事務為讀寫。

  • 事務超時預設為底層事務系統的預設超時,如果不支援超時則為無。

  • 任何 RuntimeException 都會觸發回滾,而任何 checked Exception 則不會。

你可以更改這些預設設定。下表總結了巢狀在 <tx:advice/><tx:attributes/> 標籤內的 <tx:method/> 標籤的各種屬性:

表 1. <tx:method/> 設定
屬性 必需? 預設值 描述

name

與事務屬性關聯的方法名。可以使用萬用字元 (*) 將相同的事務屬性設定與多個方法關聯(例如,get*handle*on*Event 等)。

propagation

REQUIRED

事務傳播行為。

isolation

DEFAULT

事務隔離級別。僅適用於 REQUIREDREQUIRES_NEW 傳播設定。

timeout

-1

事務超時(秒)。僅適用於 REQUIREDREQUIRES_NEW 傳播。

read-only

false

讀寫事務與只讀事務。僅適用於 REQUIREDREQUIRES_NEW

rollback-for

逗號分隔的 Exception 例項列表,這些例項會觸發回滾。例如,com.foo.MyBusinessException,ServletException

no-rollback-for

逗號分隔的 Exception 例項列表,這些例項不會觸發回滾。例如,com.foo.MyBusinessException,ServletException