1.前言
在聲明式的事務處理中,要配置一個切面,即一組方法,如
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="find*" read-only="true" propagation="NOT_SUPPORTED" />
</tx:attributes>
</tx:advice>
其中就用到了propagation,表示打算對這些方法怎麼使用事務,是用還是不用,其中propagation有七種配置,REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED。默認是REQUIRED。
2.七種配置
下面是Spring中Propagation類的事務屬性詳解:REQUIRED:支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
SUPPORTS:支持當前事務,如果當前沒有事務,就以非事務方式執行。
MANDATORY:支持當前事務,如果當前沒有事務,就拋出異常。
REQUIRES_NEW:新建事務,如果當前存在事務,把當前事務掛起。
NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
NEVER:以非事務方式執行,如果當前存在事務,則拋出異常。
NESTED:支持當前事務,如果當前事務存在,則執行一個嵌套事務,如果當前沒有事務,就新建一個事務。
3.注意
這個配置將影響數據存儲,必須根據情況選擇。轉載地址:http://nannan408.iteye.com/blog/1754882