javascript
(Spring)声明式事务
Spring中的事務管理
Spring在不同的事務管理API之上定義了一個抽象層,使得開發人員不必了解底層的事務管理API就可以使用Spring的事務管理機制。Spring支持編程式事務管理和聲明式的事務管理。
編程式事務管理
-
將事務管理代碼嵌到業務方法中來控制事務的提交和回滾
-
缺點:必須在每個事務操作業務邏輯中包含額外的事務管理代碼
聲明式事務管理
-
一般情況下比編程式事務好用。
-
將事務管理代碼從業務方法中分離出來,以聲明的方式來實現事務管理。
-
將事務管理作為橫切關注點,通過aop方法模塊化。Spring中通過Spring AOP框架支持聲明式事務管理。
使用Spring管理事務,注意頭文件的約束導入 : tx
xmlns:tx="http://www.springframework.org/schema/tx"http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">事務管理器
-
無論使用Spring的哪種事務管理策略(編程式或者聲明式)事務管理器都是必須的。
-
就是 Spring的核心事務管理抽象,管理封裝了一組獨立于技術的方法。
JDBC事務
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /> </bean>配置事務的通知
<!--配置事務通知--> <tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!--配置事務的傳播特性--><tx:method name="add" propagation="REQUIRED"/><tx:method name="delete" propagation="REQUIRED"/><tx:method name="update" propagation="REQUIRED"/><tx:method name="search*" propagation="REQUIRED"/><tx:method name="get" read-only="true"/><tx:method name="*" propagation="REQUIRED"/></tx:attributes> </tx:advice>spring事務傳播特性:
事務傳播行為就是多個事務方法相互調用時,事務如何在這些方法間傳播。spring支持7種事務傳播行為:
-
propagation_requierd:如果當前沒有事務,就新建一個事務,如果已存在一個事務中,加入到這個事務中,這是最常見的選擇。
-
propagation_supports:支持當前事務,如果沒有當前事務,就以非事務方法執行。
-
propagation_mandatory:使用當前事務,如果沒有當前事務,就拋出異常。
-
propagation_required_new:新建事務,如果當前存在事務,把當前事務掛起。
-
propagation_not_supported:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
-
propagation_never:以非事務方式執行操作,如果當前事務存在則拋出異常。
-
propagation_nested:如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作
Spring 默認的事務傳播行為是 PROPAGATION_REQUIRED,它適合于絕大多數的情況。
配置AOP
要先導入aop的頭文件!
總結
以上是生活随笔為你收集整理的(Spring)声明式事务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (Spring)整合mybatis
- 下一篇: (SpringMVC)概述和简单使用