Spring Boot事物Transactional不起作用排除

(本文出自oschina博主文章:https://my.oschina.net/happyBKs/blog/1624482)
spring對事務(wù)的管理咱枉,之前的博客文章中也介紹過,不再詳細累述汇恤。
本文想說的是庞钢,當(dāng)@Transactional不起作用如何排查問題。

可以按照以下幾個步驟逐一確認:

  1. 首先要看數(shù)據(jù)庫本身對應(yīng)的庫因谎、表所設(shè)置的引擎是什么基括。MyIsam不支持事務(wù),如果需要财岔,則必須改為InnnoDB风皿。

  2. @Transactional所注解的方法是否為public

  3. @Transactional所注解的方法所在的類,是否已經(jīng)被注解@Service或@Component等匠璧。

  4. 需要調(diào)用該方法桐款,且需要支持事務(wù)特性的調(diào)用方是在在 @Transactional所在的類的外面。注意:類內(nèi)部的其他方法調(diào)用這個注解了@Transactional的方法夷恍,事務(wù)是不會起作用的魔眨。

  5. 注解為事務(wù)范圍的方法中,事務(wù)的回滾僅僅對于unchecked的異常有效酿雪。對于checked異常無效遏暴。也就是說事務(wù)回滾僅僅發(fā)生在出現(xiàn)RuntimeException或Error的時候。
    如果希望一般的異常也能觸發(fā)事務(wù)回滾指黎,需要在注解了@Transactional的方法上朋凉,將 @Transactional回滾參數(shù)設(shè)為:

    @Transactional(rollbackFor=Exception.class)
    
  6. 非springboot項目,需要檢查spring配置文件xml中:

    • 掃描包范圍是否配置好醋安,否則不會在啟動時spring容器中創(chuàng)建和加載對應(yīng)的bean對象杂彭。
    <context:component-scan base-package="com.happybks" ></context:component-scan>
    
    • 事務(wù)是否已經(jīng)配置成開啟
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
    
  7. springboot項目有兩個可選配置,默認已經(jīng)支持事務(wù)了吓揪,可以寫也可以不寫亲怠。

    • springboot啟動類,即程序入口類柠辞,需要注解@EnableTransactionManagement
    package com.happybks.pets;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    @EnableTransactionManagement
    @SpringBootApplication
    public class PetsApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(PetsApplication.class, args);
        }
    }
    
    • springboot配置文件application.yml中团秽,可以配置上失敗回滾:
    spring:
       profiles:
          active: prod
       datasource:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/spbdb
          username: root
          password:
      jpa:
          hibernate:
          ddl-auto:
          show-sql: true
      transaction:
          rollback-on-commit-failure: true
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子徙垫,更是在濱河造成了極大的恐慌讥裤,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姻报,死亡現(xiàn)場離奇詭異己英,居然都是意外死亡,警方通過查閱死者的電腦和手機吴旋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門损肛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荣瑟,你說我怎么就攤上這事治拿。” “怎么了笆焰?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵劫谅,是天一觀的道長。 經(jīng)常有香客問我嚷掠,道長捏检,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任不皆,我火速辦了婚禮贯城,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘霹娄。我一直安慰自己能犯,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布犬耻。 她就那樣靜靜地躺著踩晶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪香追。 梳的紋絲不亂的頭發(fā)上合瓢,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天坦胶,我揣著相機與錄音透典,去河邊找鬼。 笑死顿苇,一個胖子當(dāng)著我的面吹牛峭咒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纪岁,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼凑队,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起漩氨,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤西壮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后叫惊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體款青,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡渣锦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年吏够,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龙助。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔗坯,死狀恐怖康震,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宾濒,我是刑警寧澤腿短,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站绘梦,受9級特大地震影響答姥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谚咬,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一鹦付、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧择卦,春花似錦敲长、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尚辑,卻和暖如春辑鲤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杠茬。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工月褥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瓢喉。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓宁赤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栓票。 傳聞我的和親對象是個殘疾皇子决左,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容