springboot aop事務簡介

2021-10-09 06:24:01 字數 1755 閱讀 5269

開啟:在springboot啟動類上加註解@enabletransactionmanagement

使用:在方法或者類上加註解:@transactional

@transactional 當這個註解使用在類上意味著這個類中的所有方法都受事務控制,該註解在類上使用定義類中方法共同特性,如有特殊在方法上註解另行加註解

@transactional

(timeout =30,

//超時時間設定 預設單位秒 預設-1 不超時 超時則自動回滾事務。

readonly =

false

,//false:增刪改 true:查 沒有加鎖

isolation = isolation.read_committed,

//事務的隔離級別,預設值採用 default。

rollbackfor = throwable.

class

,//回滾 throwable.class回滾條件 預設runtimeexception.class 執行時異常 多個用,分割

norollbackfor =

//不回滾

propagation = propagation.required)

//事務傳播行為 具體看下文

}

傳播行為(事務的傳播+事務的行為)

傳播行為作用:如果有多個事務進行巢狀執行,子事務是否要和大事務共用乙個事務

如:tx_a() tx_b() tx_c() 誰先執行 執行順序如何

aservice

tx_c()

}}

當在a上加propagation = propagation.required

和propagation = propagation.required_new 兩種情況示意圖

測試方法上 //required 表示為 該方法的事務傳播行為propagation = propagation.required

當(1)處 放開註解時 那些事務將會執行失敗

當(2)處 放開註解時 那些事務將會執行失敗

service

//requiredc(

)//requires_newd(

)//requirede(

)}//requires_newg(

)}// 10/0 崩(2)處

}}

事務傳播行為型別

說明required

如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。

requires_new

新建事務,如果當前存在事務,把當前事務掛起。

supports

支援當前事務,如果當前沒有事務,就以非事務方式執行。

mandatory

使用當前的事務,如果當前沒有事務,就丟擲異常。

not_supported

以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

never

以非事務方式執行,如果當前存在事務,則丟擲異常。

nested

如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與required類似的操作。

注意:如果是required事務屬性都是繼承大事務的

SpringBoot AOP程式設計

aop org.springframework.boot groupid spring boot starter aop artifactid dependency spring 的aop預設是使用jdk spring aop預設是使用jdk動態 即基於介面的 可以通過proxy target cl...

SpringBoot AOP 初步理解

剛開始接觸spring的時候不可避免的會提到aop,網上一查,給你一句話就叫切面程式設計,個人在這裡提出下我自己的一些理解以及乙個例子 記得小時候在夏天的時候,有一次說風來吧風就來了,雨來吧雨就來了,而不需要我們去拿乙個吹風機製造風,或者製造雨。那麼aop就如同我們小時候想像的咒語一樣,說來就來,只...

springboot aop使用方式

定義切面類 切面類進行增強的兩種寫法 切點匹配註解和規則 引入相應的aop包 org.springframework.bootgroupid spring boot starter aopartifactid dependency 定義切面類 類名自定義 import org.aspectj.lan...