轉:
事務的傳播特<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 讀取操作 -->
<tx:method name="load*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
<tx:method name="get*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
<tx:method name="find*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
</tx:attributes>
</tx:advice>
spring中PROPAGATION類的事務屬性詳解
-
PROPAGATION_REQUIRED: 支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
-
PROPAGATION_SUPPORTS: 支持當前事務,如果當前沒有事務,就以非事務方式執行。
-
PROPAGATION_MANDATORY: 支持當前事務,如果當前沒有事務,就拋出異常。
-
PROPAGATION_REQUIRES_NEW: 新建事務,如果當前存在事務,把當前事務掛起。
-
PROPAGATION_NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
-
PROPAGATION_NEVER: 以非事務方式執行,如果當前存在事務,則拋出異常。
-
PROPAGATION_NESTED: 支持當前事務,如果當前事務存在,則執行一個嵌套事務,如果當前沒有事務,就新建一個事務。
<tx:method/>
有關的設置
屬性 | 是否需要? | 默認值 | 描述 |
---|---|---|---|
name |
是 | 與事務屬性關聯的方法名。通配符(*)可以用來指定一批關聯到相同的事務屬性的方法。如: |
|
propagation |
不 | REQUIRED | 事務傳播行為 |
isolation |
不 | DEFAULT | 事務隔離級別 |
timeout |
不 | -1 | 事務超時的時間(以秒為單位) |
read-only |
不 | false | 事務是否只讀? |
rollback-for |
不 | 將被觸發進行回滾的 |
|
no-rollback-for |
不 | 不 被觸發進行回滾的 |