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

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

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

問題描述

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

解決方法

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

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

排查步驟

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

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

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

3、@Transactional所注解的方法所在的類,是否已經(jīng)使用了注解@Service或@Component等。

4、需要調(diào)用該方法,且需要支持事務(wù)特性的調(diào)用方,是在 @Transactional所在的類的外面。

注意:類內(nèi)部的其他方法調(diào)用這個(gè)注解了@Transactional的方法,事務(wù)是不會(huì)起作用的。

5、注解為事務(wù)范圍的方法中,事務(wù)的回滾僅僅對(duì)于unchecked的異常有效。對(duì)于checked異常無效。也就是說事務(wù)回滾僅僅發(fā)生在出現(xiàn)RuntimeException或Error的時(shí)候。

那么什么是checked異常呢?

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

通俗一點(diǎn)就是:

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

unchecked異常,回滾解決辦法

方法一

手動(dòng)回滾。

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

@Transactional(rollbackFor=Exception.class)

方法二

如上述分析。

對(duì)uncheck異常進(jìn)行catch,然后拋出RuntimeException異常。

方法三

在service層方法的catch語(yǔ)句中增加:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

語(yǔ)句,手動(dòng)回滾,這樣上層就無需去處理異常。

總結(jié)

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

相關(guān)文章

  • 詳解SpringBoot如何自定義Starter

    詳解SpringBoot如何自定義Starter

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

    @SpringBootTest 注解報(bào)紅問題及解決

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

平顶山市| 天津市| 乐业县| 巩义市| 湖北省| 黄平县| 合川市| 汕尾市| 镇平县| 惠来县| 马关县| 温州市| 深州市| 辽阳县| 达孜县| 武威市| 郁南县| 顺平县| 沙坪坝区| 韩城市| 澄江县| 凌海市| 湾仔区| 益阳市| 虞城县| 乃东县| 通化市| 乐昌市| 石渠县| 安新县| 太仓市| 辰溪县| 桃源县| 辽阳县| 平谷区| 顺昌县| 亚东县| 高邮市| 清镇市| 新丰县| 汝州市|