最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot?@Transactional事務(wù)不生效排查方式

 更新時間:2024年01月30日 08:39:38   作者:magic_kid_2010  
這篇文章主要介紹了SpringBoot?@Transactional事務(wù)不生效排查方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

問題描述

在開發(fā)Spring Boot項目時,方法使用了@Transactional注解,但是當(dāng)方法拋出異常時,數(shù)據(jù)沒有回滾。

解決方法

經(jīng)排查,發(fā)現(xiàn)是數(shù)據(jù)庫引擎搞的鬼。

之前在建mysql數(shù)據(jù)庫表的時候,忘記修改表使用的引擎,引擎使用的是MyISAM,而MyISAM是不支持事務(wù)的,只需將引擎改為InnoDB即可。

排查步驟

當(dāng)@Transactional事務(wù)不生效的時候,可以遵循以下排查步驟:

1、查看數(shù)據(jù)庫或表,設(shè)置的引擎。MyISAM是不支持事務(wù)的,必須改為InnoDb。

2、@Transactional注解的方法是否為public。如果應(yīng)用在protected、private或者 package的方法上,不會報錯,但是事務(wù)設(shè)置不會起作用。

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的時候。

那么什么是checked異常呢?

java里面將派生于Error或者RuntimeException(比如空指針,1/0)的異常稱為unchecked異常,其他繼承自java.lang.Exception得異常統(tǒng)稱為Checked Exception,如IOException、TimeoutException等

通俗一點就是:

  • 代碼中出現(xiàn)的空指針等異常,會被回滾。
  • 而文件讀寫、網(wǎng)絡(luò)超時問題等,spring就沒法回滾了。

unchecked異常,回滾解決辦法

方法一

手動回滾。

給注解加上參數(shù)如:

@Transactional(rollbackFor=Exception.class)

方法二

如上述分析。

對uncheck異常進行catch,然后拋出RuntimeException異常。

方法三

在service層方法的catch語句中增加:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

語句,手動回滾,這樣上層就無需去處理異常。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解SpringBoot如何自定義Starter

    詳解SpringBoot如何自定義Starter

    Starter是Spring Boot中的一個非常重要的概念,Starter相當(dāng)于模塊,它能將模塊所需的依賴整合起來并對模塊內(nèi)的Bean根據(jù)環(huán)境( 條件)進行自動配置。本文將介紹SpringBoot如何自定義Starter,感興趣的可以學(xué)習(xí)一下
    2021-12-12
  • @SpringBootTest 注解報紅問題及解決

    @SpringBootTest 注解報紅問題及解決

    這篇文章主要介紹了@SpringBootTest 注解報紅問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java零基礎(chǔ)教程之Windows下安裝 JDK的方法圖解

    Java零基礎(chǔ)教程之Windows下安裝 JDK的方法圖解

    這篇文章主要介紹了Java零基礎(chǔ)教程之Windows下安裝 JDK的方法圖解,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • 淺析SpringBoot多數(shù)據(jù)源實現(xiàn)方案

    淺析SpringBoot多數(shù)據(jù)源實現(xiàn)方案

    現(xiàn)在很多項目的開發(fā)過程中,可能涉及到多個數(shù)據(jù)源,像讀寫分離的場景,或者因為業(yè)務(wù)復(fù)雜,導(dǎo)致不同的業(yè)務(wù)部署在不同的數(shù)據(jù)庫上,那么這樣的場景,我們應(yīng)該如何在代碼中簡潔方便的切換數(shù)據(jù)源呢,本文介紹SpringBoot多數(shù)據(jù)源實現(xiàn)方案,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Java實現(xiàn)圖片翻轉(zhuǎn)以及任意角度旋轉(zhuǎn)

    Java實現(xiàn)圖片翻轉(zhuǎn)以及任意角度旋轉(zhuǎn)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)圖片翻轉(zhuǎn)以及任意角度旋轉(zhuǎn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 教你如何用Eclipse創(chuàng)建一個Maven項目

    教你如何用Eclipse創(chuàng)建一個Maven項目

    這篇文章主要介紹了教你如何用Eclipse創(chuàng)建一個Maven項目,文中有非常詳細的代碼示例,對正在入門Java的小伙伴們是非常有幫助的喲,需要的朋友可以參考下
    2021-05-05
  • java在文件尾部追加內(nèi)容的簡單實例

    java在文件尾部追加內(nèi)容的簡單實例

    下面小編就為大家?guī)硪黄猨ava在文件尾部追加內(nèi)容的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 關(guān)于@Data和@Builder注解解析

    關(guān)于@Data和@Builder注解解析

    在使用Lombok庫時,@Data和@Builder注解混用可能會導(dǎo)致編譯失敗,解決方法包括添加@NoArgsConstructor和@AllArgsConstructor注解,或者重寫無參構(gòu)造器并注解@Tolerate,這是因為@Data自動生成的構(gòu)造器與@Builder的構(gòu)造模式存在沖突
    2024-10-10
  • Java中你絕對沒用過的一個關(guān)鍵字Record的使用

    Java中你絕對沒用過的一個關(guān)鍵字Record的使用

    這篇文章主要給大家介紹一個?Java?中的一個關(guān)鍵字?Record,那?Record?關(guān)鍵字跟不可變類有什么關(guān)系呢?看完今天的文章你就知道了,快跟隨小編一起學(xué)習(xí)一下吧
    2022-11-11
  • SpringBoot整合jasypt加密配置文件敏感信息

    SpringBoot整合jasypt加密配置文件敏感信息

    在項目中我們需要對配置文件的一些敏感信息進行加密處理,比如數(shù)據(jù)庫賬戶密碼,避免直接暴露出來,這種場景常常用于生產(chǎn)環(huán)境,我們不想讓開發(fā)人員知道生產(chǎn)庫的密碼,有運維人員統(tǒng)一管理,所以本文給大家介紹了SpringBoot整合jasypt加密配置文件敏感信息
    2024-06-06

最新評論

临猗县| 互助| 紫金县| 陕西省| 甘泉县| 惠东县| 达拉特旗| 临邑县| 郸城县| 南城县| 隆回县| 临颍县| 嘉荫县| 临潭县| 磐安县| 清新县| 白银市| 绥化市| 嘉禾县| 四会市| 凌云县| 马尔康县| 廊坊市| 渭南市| 调兵山市| 三穗县| 高雄县| 永兴县| 广灵县| 赤壁市| 宜君县| 阿坝县| 奉新县| 万荣县| 梁平县| 阜新市| 交口县| 翁源县| 金秀| 泸西县| 海阳市|