欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

問題描述

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

解決方法

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

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

排查步驟

當@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)文章

  • Java中的@PostConstruct注解的使用

    Java中的@PostConstruct注解的使用

    本文主要介紹了Java中的@PostConstruct注解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Java基礎(chǔ)之TreeMap詳解

    Java基礎(chǔ)之TreeMap詳解

    這篇文章主要介紹了Java基礎(chǔ)之TreeMap詳解,文中有非常詳細的代碼示例,對正在學習java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringBoot下獲取resources目錄下文件的常用方法

    SpringBoot下獲取resources目錄下文件的常用方法

    本文詳細介紹了SpringBoot獲取resources目錄下文件的常用方法,包括使用this.getClass()方法、ClassPathResource獲取以及hutool工具類ResourceUtil獲取,感興趣的可以了解一下
    2024-10-10
  • IDEA2020.1啟動SpringBoot項目出現(xiàn)java程序包:xxx不存在

    IDEA2020.1啟動SpringBoot項目出現(xiàn)java程序包:xxx不存在

    這篇文章主要介紹了IDEA2020.1啟動SpringBoot項目出現(xiàn)java程序包:xxx不存在,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • UniApp?+?SpringBoot?實現(xiàn)支付寶支付和退款功能

    UniApp?+?SpringBoot?實現(xiàn)支付寶支付和退款功能

    這篇文章主要介紹了UniApp?+?SpringBoot?實現(xiàn)支付寶支付和退款功能,基本的?SpringBoot?的腳手架,可以去IDEA?自帶的快速生成腳手架插件,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-06-06
  • Springboot 整合 Java DL4J 實現(xiàn)農(nóng)產(chǎn)品質(zhì)量檢測系統(tǒng)(推薦)

    Springboot 整合 Java DL4J 實現(xiàn)農(nóng)產(chǎn)品質(zhì)量檢測系統(tǒng)(推薦)

    本文詳細介紹了系統(tǒng)的搭建過程,包括技術(shù)選型、數(shù)據(jù)處理、模型訓練和評估等關(guān)鍵步驟,系統(tǒng)采用卷積神經(jīng)網(wǎng)絡(luò),對水果成熟度和缺陷進行識別,有效解決了傳統(tǒng)方法成本高、效率低的問題,有助于提升農(nóng)產(chǎn)品檢測的科技含量和自動化水平
    2024-10-10
  • Spring中自帶的@Schedule實現(xiàn)自動任務(wù)的過程解析

    Spring中自帶的@Schedule實現(xiàn)自動任務(wù)的過程解析

    這篇文章主要介紹了關(guān)于Spring中自帶的@Schedule實現(xiàn)自動任務(wù),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • spring security在分布式項目下的配置方法(案例詳解)

    spring security在分布式項目下的配置方法(案例詳解)

    這篇文章主要介紹了spring security在分布式項目下的配置方法,本文通過一個項目案例給大家詳細介紹,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • java多線程編程之InheritableThreadLocal

    java多線程編程之InheritableThreadLocal

    這篇文章主要為大家詳細介紹了java多線程編程之InheritableThreadLocal,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • RequestContextHolder.getRequestAttributes()空指針問題及解決

    RequestContextHolder.getRequestAttributes()空指針問題及解決

    這篇文章主要介紹了RequestContextHolder.getRequestAttributes()空指針問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論