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:支持當前事務,如果當前事務存在,則執行一個嵌套事務,如果當前沒有事務,就新建一個事務。