spring的宣告式事務讓程式設計師不在業務層用硬編碼的方式進行事務控制,大大簡化了編碼難度,**調整方便。spring的宣告式事務基於aop實現,在配置檔案中即可完成,需要使用tx、aop、兩個命名空間下的標籤完成。
需要配置乙個事務管理器,通過它來完成對事務處理的全面支援和統一管理,
在切面中相當於增強處理類,這裡使用datasourcetransactionmanager來實現。
<
!-- 省略資料來源、sqlsessionfactorybean、dao 及業務bean的配置--
>
<
!-- 定義事務管理器,注入配置好的資料來源--
>
"txmanager"
class
="org.springframework.jdbc.datasource" ref=
"datasource"
>
<
/bean>
"txadvice" transaction-manager=
"txmanager"
>
<
!-- 定義屬性,宣告事務規則 --
>
"find*" propagation=
"supports"
/>
"add*" propogation=
"required"
/>
"del*" propogation=
"required"
/>
"update*" propogation=
"required"
/>
"*" propogation=
"required"
/>
<
/tx:attributes>
<
/tx:advice>
標籤可以設定transaction-manager屬性引用乙個事務管理器bean。
transaction-manager屬性的預設值是transactionmanager。
如果事務管理bean的id是這個的話可以不指定該屬性。
子標籤定義事務屬性,事務屬性通過標籤進行設定,可以為不同的方法設定不同的事務屬性。其中name屬性用於指定匹配的方法,可以使用萬用字元(*)。
<
!-- 定義切面 --
>
<
!-- 定義切入點 --
>
"servicemethod" expression=
"execution(*cn.smbms.service..*(..))"
/>
<
!-- 將事務增強與切入點組合 --
>
"txadvice" pointcut-ref=
"servicemethod"
/>
<
/aop:config>
至此宣告式事務已經配置在了service層的所有類的所有方法上。
在這裡儲存一篇很詳細、很有參考價值的文章:
Spring宣告式事務
net.sf.hibernate.dialect.oracle9dialect false true net.sf.hibernate.transaction.jdbctransactionfactory 1025 用heibernate來管理事務 當用spring和heibernate一起完成da...
spring宣告式事務
1.什麼是事務 事務是程式中一系列嚴密的操作,所有操作執行必須成功完成,否則在每個操作所做的更改將會被撤銷,這也是事務的原子性 要麼成功,要麼失敗 2.事務的特性 事務特性分為四個 原子性 atomicity 一致性 consistency 隔離性 isolation 持續性 durability ...
Spring 宣告式事務
propagation 事務傳播機制有如下幾種 required 預設值,表示如果存在乙個事務,則支援當前事務 如果沒有事務,則開啟乙個新事務。requires new 表示總是開啟乙個新的事務,如果乙個事務已經存在,則將這個存在的事務掛起,開啟新事務執行該方法。mandatory 表示如果存在乙個...