Spring中事務支持的重要類:
TransactionDefinition
Spring支持的7種事務類型:
PROPAGATION_REQUIRED:表示當前方法必須運行在事務中。如果當前事務存在,方法將會在該事務中運行。否則,會啟動一個新的事務。
PROPAGATION_SUPPORTS:表示當前方法不需要事務上下文,但是如果存在當前事務的話,那么該方法會在這個事務中運行。
PROPAGATION_MANDATORY:表示該方法必須在事務中運行,如果當前事務不存在,則會拋出一個異常。
PROPAGATION_REQUIRES_NEW:表示當前方法必須運行在它自己的事務中。一個新的事務將被啟動。如果存在當前事務,在該方法執行期間,當前事務會被掛起。如果使用JTATransactionManager的話,則需要訪問TransactionManager。
PROPAGATION_NOT_SUPPORTED:表示該方法不應該運行在事務中。如果存在當前事務,在該方法運行期間,當前事務將被掛起。如果使用JTATransactionManager的話,則需要訪問TransactionManager。
PROPAGATION_NEVER:表示當前方法不應該運行在事務上下文中。如果當前正有一個事務在運行,則會拋出異常。
PROPAGATION_NESTED:表示如果當前已經存在一個事務,那么該方法將會在嵌套事務中運行。嵌套的事務可以獨立于當前事務進行單獨地提交或回滾。如果當前事務不存在,那么其行為與PROPAGATION_REQUIRED一樣。注意各廠商對這種傳播行為的支持是有所差異的。可以參考資源管理器的文檔來確認它們是否支持嵌套事務。
- 關鍵配置代碼
<bean id="jdbcManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
<!--①通過以下配置為所有繼承BaseService類的所有子類的所有public方法都添加事務增強-->
<aop:config proxy-target-class="true">
<aop:pointcut id="serviceJdbcMethod"
expression="事務作用域"/>
<aop:advisor pointcut-ref="serviceJdbcMethod" advice-ref="jdbcAdvice" order="0"/>
</aop:config>
<tx:advice id="jdbcAdvice" transaction-manager="jdbcManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
免責聲明
以上內容記錄自http://blog.csdn.net/hy6688_/article/details/44763869 及http://www.mamicode.com/info-detail-1248286.html,侵刪。