Tranactional 註解分析

2022-06-07 22:45:11 字數 2031 閱讀 6958

spring可以通過註解@transactional來為業務邏輯層的方法(呼叫dao完成持久化動作)新增事務能力,如下是@transactional註解的定義

參 數 名 稱

功 能 描 述

readonly

該屬性用於設定當前事務是否為唯讀事務,設定為true表示唯讀,false則表示可讀寫,預設值為false。例如:@transactional(readonly=true)

rollbackfor

該屬性用於設定需要進行回滾的異常類陣列,當方法中丟擲指定異常陣列中的異常時,則進行事務回滾。例如:

指定單一異常類:@transactional(rollbackfor=runtimeexception.class)

指定多個異常類:@transactional(rollbackfor=)

用於指定能夠觸發事務回滾的異常型別,可以指定多個異常型別。

rollbackforclassname

該屬性用於設定需要進行回滾的異常類名稱陣列,當方法中丟擲指定異常名稱陣列中的異常時,則進行事務回滾。例如:

指定單一異常類名稱:@transactional(rollbackforclassname="runtimeexception")

指定多個異常類名稱:@transactional(rollbackforclassname=)

norollbackfor

該屬性用於設定不需要進行回滾的異常類陣列,當方法中丟擲指定異常陣列中的異常時,不進行事務回滾。例如:

指定單一異常類:@transactional(norollbackfor=runtimeexception.class)

指定多個異常類:@transactional(norollbackfor=)

丟擲指定的異常型別,不回滾事務,也可以指定多個異常型別。

norollbackforclassname

該屬性用於設定不需要進行回滾的異常類名稱陣列,當方法中丟擲指定異常名稱陣列中的異常時,不進行事務回滾。例如:

指定單一異常類名稱:@transactional(norollbackforclassname="runtimeexception")

指定多個異常類名稱:

@transactional(norollbackforclassname=)

propagation

該屬性用於設定事務的傳播行為。

例如:@transactional(propagation=propagation.not_supported,readonly=true)

isolation

該屬性用於設定底層資料庫的事務隔離級別,事務隔離級別用於處理多事務併發的情況,通常使用資料庫的預設隔離級別即可,基本不需要進行設定

timeout

該屬性用於設定事務的超時秒數,預設值為-1表示永不超時

注意:1. 一般情況下我們在處理具體的業務都是在service層來進行處理操作,此時如果在service類上新增@transactional註解的話,那麼service曾的每乙個業務方法呼叫的時候都會開啟乙個事務。

2. spring預設情況下會對(runtimeexception)及其子類來進行回滾,在遇見exception及其子類的時候則不會進行回滾操作。

3. @transactional既可以作用於介面,介面方法上以及類已經類的方法上。但是spring官方不建議介面或者介面方法上使用該註解,因為這只有在使用基於介面的**時它才會生效。另外, @transactional 註解應該只被應用到 public 方法上,這是由 spring aop 的本質決定的。如果你在 protected、private 或者預設可見性的方法上使用 @transactional 註解,這將被忽略,也不會丟擲任何異常。 spring預設使用的是jdk自帶的基於介面的**,而沒有使用基於類的**cglib。

4.  @transactional註解底層使用的是動態**來進行實現的,如果在呼叫本類中的方法,此時不新增@transactional註解,而是在呼叫類中使用thisi呼叫本類中的另外乙個新增了@transactional註解,此時this呼叫的方法上的@transactional註解是不起作用的。

參考部落格:

2020 11 02 分頁 使用註解開發

作用很明顯,資料庫不可能每次把所有資料給查出來。1.編寫介面 手動limit分頁 listgetuserlistbyinfolimit mapmap 使用萬能的hashmap來輸入資訊。2.在.xml中註冊介面 select from mybatis.user limit 注意這裡的鍵值對值要和自己...

Spring註解 Import註解

常用的匯入註解分類 註冊自己寫的類service dao controller可用包掃瞄 元件標註註解 controller service repository component bean 匯入的第三方包裡面的元件 import 快速給容器中匯入乙個元件 1 import 要匯入到容器中的元件 ...

Java 註解 元註解

retention retentionpolicy.source 註解僅存在於原始碼中,在class位元組碼檔案中不包含 retention retentionpolicy.class 預設的保留策略,註解會在class位元組碼檔案中存在,但執行時無法獲得,retention retentionpo...