Spring AOP 宣告式事務

2021-09-24 15:17:11 字數 2333 閱讀 2490

a.程式設計式事務管理:通過transaction template手動管理事務,實際應用中很少使用。

b.使用xml配置宣告式事務:實際中用的很多因為**侵入性最小,而且是通過aop實現的。

(這裡我們講解一下宣告式事務)

a.基於< tx> 和< aop>命名空間的宣告式事務管理:其與spring aop 結合緊密,可以充分利用切點表示式的強大支援,使得管理事務更加靈活。

b.基於 @transactional 的註解方式:此方式將宣告式事務管理簡化到了極致。操作簡單,功能不遜a方式。(其他兩種方法因長期不使用本次不再介紹)

spring封裝了事務管理的**,事務的操作一般有三步,開啟事務,提交事務,回滾事務。為了讓我們更好的管理事務的物件,spring為我們提供了乙個介面platfromtransactionmanager,它有很多實現類,我們就使用其中的乙個實現類

datasourcetransactionmanager,因為使用jdbc或者ibatis進行資料持久化時使用。

配置xml檔案:

a.將兩個bean建立連線乙個是jdbc乙個是dao層類

b.配置資料來源(並引入外部properties檔案)

$

c.初始化事務管理器

d.配置事務aop通知

e.定義aop配置

這樣就完成了xml方式配置

a.先配置切點表示式

@pointcut("execution(* com.***.spring.******.say..*.*(..))")
b.配置連線資料庫

@propertysource("classpath:jdbc.properties")

@componentpublic class mydatasource extends drivermanagerdatasource") string driver, @value("$") string url, @value("$") string username, @value("$") string password, @value("$") string characterencoding)

}

c.在dao層中設定開始事務以及設定屬性

@transactional(rollbackfor = )

@transactional(readonly = true)//事務的屬性下面介紹

d.在main方法類中新增開啟事務相關註解

@slf4j

@configuration

@componentscan(basepackages = "com.lanou3g.spring.transaction.annotation")// 開啟事務相關註解支援

@enabletransactionmanagement

此時我們使用的@enabletransactionmanagement這個註解,我們可以使用@transactional不過屬性要在後面直接加上,就此註解配置完成。但是spring aop **有兩個弊端乙個是註解方式只能用到public方法上,和自呼叫問題,所以我們可以將aspectj 資訊新增到 xml 配置資訊中,下次再講解。

事務定義介面 transactiondefinition 中定義了事務描述相關的三類常量:事務隔離級別、事務傳播行為、事務預設超時時限,及對它們的操作。

五大隔離級別:

隔離級別說明

七大傳播行為:

我們可以在xml中和註解中分別新增完成開始事務介紹一下xml配置

a.回滾特定異常

b.不會滾特定異常

至此兩種配置方式已經結束,但是關於事務的更多知識還有很多下次分享!

Spring Aop實現宣告式事務

在系統的業務邏輯層中,每個業務會涉及到多個資料庫的操作,業務層其實是通過資料層的多個方法共同完成乙個業務,而這些方法要麼都執行,要麼都不執行,否則會造成資料的不一致,由此我們要對業務層進行事務管理。我們有以下兩種方式實現對業務的事務控制。1.傳統的方式 每個業務方法都手動加上事務控制的 2.採用ao...

Spring AOP宣告式事務異常回滾

近日測試用例,發現這樣乙個現象 在業務 中,有如下兩種情況,比如 throw new runtimeexception 事物回滾 throw new exception 事物沒有回滾 自以為很了解事物,或許時間久遠的緣故,沒分析出來何故,遂查閱了下資料,寫下了如下的內容,供參考 1 spring的a...

宣告式事務

宣告式事務編輯以方法為單位,進行事物控制 丟擲異常,事物回滾。最小的執行單位為方法。決定執行成敗是通過是否丟擲異常來判斷的,丟擲異常即執行失敗 宣告式事務 declarative transaction management 是spring提供的對程式事務管理的方式之一。spring的宣告式事務顧名...