Spring的事務管理

2021-07-11 17:49:58 字數 3679 閱讀 3605

手動編碼的方式完成事務管理:

需要事務管理器:真正管理事務物件.

* spring提供了事務管理的模板(工具類.)

第一步:註冊事務管理器:

id="transactionmanager"

class="org.springframework.jdbc.datasource.datasourcetransactionmanager">

name="datasource"

ref="datasource"/>

bean>

第二步:註冊事務模板類:

id="transactiontemplate"

class="org.springframework.transaction.support.transactiontemplate">

name="transactionmanager"

ref="transactionmanager"/>

bean>

第三步:在業務層注入模板類:(模板類管理事務)

id="accountservice"

class="cn.itcast.spring3.demo1.accountserviceimpl">

name="accountdao"

ref="accountdao"/>

name="transactiontemplate"

ref="transactiontemplate"/>

bean>

第四步:在業務層**上使用模板:

public

void

transfer(final string from, final string to, final double money)

});}

手動編碼方式缺點:

* **量增加,**有侵入性.

宣告式事務管理:(原始方式)

基於transactionproxyfactorybean.

匯入:aop相應jar包.

第一步:註冊平台事務管理器:

id="transactionmanager"

class="org.springframework.jdbc.datasource.datasourcetransactionmanager">

name="datasource"

ref="datasource"/>

bean>

第二步:建立業務層**物件:

id="accountserviceproxy"

class="org.springframework.transaction.interceptor.transactionproxyfactorybean">

name="target"

ref="accountservice"/>

name="transactionmanager"

ref="transactionmanager"/>

name="transactionattributes">

//key:service中的方法

key="transfer">propagation_requiredprop>

props>

property>

bean>

第三步:編寫測試類:

*千萬注意:注入**物件

@autowired

@qualifier("accountserviceproxy")

private accountservice accountservice;

"transfer">propagation_required

prop格式:propagation,isolation,readonly,-exception,+exception

順序:傳播行為、隔離級別、事務是否唯讀、發生哪些異常可以回滾事務(所有的異常都回滾)、發生了哪些異常不回滾.

宣告式事務管理:(自動**.基於切面)

第一步:匯入相應jar包.

* aspectj

第二步:引入相應約束:

* aop、tx約束.

""

xmlns:xsi=""

xmlns:context=""

xmlns:aop=""

xmlns:tx=""

xsi:schemalocation="

/spring-beans.xsd

/spring-context.xsd

/spring-aop.xsd

/spring-tx.xsd">

第三步:註冊事務管理器;

id="transactionmanager"

class="org.springframework.jdbc.datasource.datasourcetransactionmanager">

name="datasource"

ref="datasource"/>

bean>

第四步:定義增強(事務管理)

id="txadvice"

transaction-manager="transactionmanager">

name="transfer"/>

tx:attributes>

tx:advice>

第五步:定義aop的配置(切點和通知的組合)

expression="execution(* cn.itcast.spring3.demo3.accountservice+.*(..))"

id="mypointcut"/>

advice-ref="txadvice"

pointcut-ref="mypointcut"/>

aop:config>

第六步:編寫測試類:

* 注入service物件,不需要注入**物件(生成這個類的時候,已經是**物件.)

基於註解的事務管理:

第一步:事務管理器:

id="transactionmanager"

class="org.springframework.jdbc.datasource.datasourcetransactionmanager">

name="datasource"

ref="datasource"/>

bean>

第二步:註解事務:

transaction-manager="transactionmanager"/>

第三步:在service上使用註解

@transactional

* 註解中有屬性值:

* isolation

* propagation

* readonly

Spring事務管理

spring是ssh中的管理員,負責管理其它框架,協調各個部分的工作。今天一起學習一下spring的事務管理。spring的事務管理分為宣告式跟程式設計式。宣告式就是在spring的配置檔案中進行相關配置 程式設計式就是用註解的方式寫到 裡。下面先說宣告式 spring配置檔案中關於事務配置總是由三...

spring事務管理

一 xml配置事務 二 註解的方式配置事務 bean id txmanaager class org.springframework.orm.hibernate3.hibernatetransactionmanager property name sessionfactory ref session...

spring 事務管理

和資料庫打交道的碼農都知道事務,事務有4大特徵,分別是原子性,一致性,隔離性,永續性。而spring 對事物提供了良好的支援,和api,通過簡單的配置,則可以減低程式設計師重複的操作。1.原子性 原子性指的是乙個事務內的所有操作要麼全部應用到資料庫,要麼取消對資料庫的操作。2.一致性 一致性和原子性...