Spring 基於AOP的事務控制

2021-09-25 00:17:05 字數 1630 閱讀 9340

事務是我們在進行資料操作的時候,要操作的事情,是乙個完整的單元,不可再分的。它包括幾個特性:原子性、一致性、可見性、隔離性;

在spring容器中,事務是被封裝到事務管理器中,spring事務管理器的介面是org.springframework.transaction.platformtransactionmanager,通過這個介面,spring為各個平台如jdbc、hibernate等都提供了對應的事務管理器,但是具體的實現就是各個平台自己的事情了。

事務的實現方式有兩種,宣告式事務和註解,分別介紹一下

需要引入事務依賴包:

匯入約束檔案

配置事務管理器

配置事務的通知;

配置aop中的通用切入點表示式

建立事務通知和切入點表示式的對應關係

&enmsp;然後我們在事務通知標籤tx:advice的內部需要設定事務的屬性,具體的屬性介紹一下:

isolation:用於指定事務的隔離級別。預設值是default,表示使用資料庫的預設隔離級別。

propagation:用於指定事務的傳播行為。預設值是required,表示一定會有事務,增刪改的選擇。查詢方法可以選擇supports。

read-only:用於指定事務是否唯讀。只有查詢方法才能設定為true。預設值是false,表示讀寫。

timeout:用於指定事務的超時時間,預設值是-1,表示永不超時。如果指定了數值,以秒為單位。

rollback-for:用於指定乙個異常,當產生該異常時,事務回滾,產生其他異常時,事務不回滾。沒有預設值。表示任何異常都回滾。

no-rollback-for:用於指定乙個異常,當產生該異常時,事務不回滾,產生其他異常時事務回滾。沒有預設值。表示任何異常都回滾。

13.同xml配置, 需要引入事務依賴包;

2.開啟spring對註解事務的支援,可以用註解:@enabletransactionmanagement

3.在需要事務支援的地方使用@transactional註解,例如:

注:使用註解進行引入事務屬性也有乙個弊端,加入多個方法上需要不同的屬性,這時候我們需要逐個的進行新增,但是基於xml的配置呢,就不需要,直接寫在一起可以了。

spring 基於AOP事務控制實現的基礎

事務控制比較重要的應該是事務的傳播 propagation,實現的基礎 threadlocal。事務控制的完整過程 insight spring transactional 屬性解析應用。建立事務的過程中,會構造transactioninfo,並且儲存上一級 transactioninfo,繫結至當...

spring的AOP 基於XML實現AOP的過程

參考對應的 logaspect bean 或者 logaspect 類。logaspect類如下 package org.zttc.itat.spring.proxy import org.aspectj.lang.joinpoint import org.aspectj.lang.proceedi...

Spring 基於註解的AOP

用於記錄日誌的工具類,它裡面提供了公共的 component logger aspect 表示當前類是乙個切面類 public class logger 前置通知 before pt1 public void beforeprintlog 後置通知 afterreturning pt1 public...