Spring中 Transactional的使用

2021-09-10 19:10:41 字數 1100 閱讀 7356

1.在需要事務管理的地方加@transactional註解,

@transactional 註解可以被應用於介面定義和介面方法、類定義和類的 public 方法上.

2.@transactional 註解只能應用到 public 可見度的方法上,

如果你在 protected、private 或者 package-visible 的方法上使用 @transactional 註解,

它也不會報錯,但是這個被註解的方法將不會展示已配置的事務設定.

3.僅僅 @transactional 註解的出現不足於開啟事務行為,它僅僅是一種元資料,必須在配置檔案中使用配置元素,才真正開啟了事務行為.

4.通過元素的"proxy-target-class"屬性值來控制是基於介面的還是基於類的**被建立,如果"proxy-target-class"屬值被設定為"true",

那麼基於類的**將起作用(這時需要cglib庫cglib.jar在classpath中).如果"proxy-target-class"屬值被設定為"false"或者這個屬性被省略,

那麼標準的jdk基於介面的**將起作用.

5.spring團隊建議在具體的類(或類的方法)上使用@transactional註解,而不要使用在類所要實現的任何介面上.

在介面上使用@transactional註解,只能當你設定了基於介面的**時它才生效,

因為註解是不能繼承的,這就意味著如果正在使用基於類的**時,

那麼事務的設定將不能被基於類的**所識別,而且物件也將不會被事務**所包裝.

6.@transactional的事務開啟,或者是基於介面的或者是基於類的**被建立,所以在同乙個類中乙個方法呼叫另乙個有事務的方法,事務是不會起作用的.

其中第六點非常重要,本人踩過坑,就是同乙個類中呼叫有事務的方法,

事務不起作用,根本原因就是類內部呼叫未使用**類**的方法.

1.內外都無try catch的時候,外部異常,全部回滾。

2.內外都無try catch的時候,內部異常,全部回滾。

3.外部有try catch時候,內部異常,全部回滾

4.內部有try catch,外部異常,全部回滾```

Spring複習筆記 Spring中的Bean

注意構造器例項化 最常用 靜態工廠方式例項化 例項工廠方式例項化 singleton 單例 始終使用的同乙個物件 預設 prototype 原型 每次都是乙個新的bean例項 request session globalsession websocket init method屬性 用於指定bean...

Spring中 Transactional失效問題

spring中的宣告式註解 transactional很大程度的方便了開發者進行db資料儲存。但是在一些特殊情況下,可能會造成註解不是按想定的方式生效,這裡說幾種可能造成的幾種情況。這是一種比較簡單不過稍不注意也可能會犯的情況。spring中事務提交還是回滾是根據呼叫的方法是否丟擲異常來決定的,因此...

Spring中classpath中萬用字元號的使用

說明 無萬用字元,必須完全匹配 classpath user base beans.xml 說明 匹配零個或多個字串 只針對名稱,不匹配目錄分隔符等 例如 user a base beans.xml user b base beans.xml 但是不匹配 user base beans.xml cl...