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

spring在service層的方法報錯事務不會回滾的解決

 更新時間:2022年02月26日 11:43:28   作者:羅小樹  
這篇文章主要介紹了spring在service層的方法報錯事務不會回滾的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

spring在service層方法報錯事務不會回滾

@Transactional(rollbackFor = {Exception.class})
public void insertData() throws Exception {
?? ?// 業(yè)務代碼1
?? ?business1();
?? ?
?? ?// 業(yè)務代碼2
?? ?business2();
?? ?
?? ?// 業(yè)務代碼3
?? ?business3();
}
?
public void business1() {
?? ?// 此處省略業(yè)務操作
}
?
public void business2() {
?? ?// 此處省略業(yè)務操作
}
?
public void business3() {
?? ?// 此處省略業(yè)務操作
}

以上代碼在service層執(zhí)行insertData方法時,business3中的代碼執(zhí)行出錯了,business1和business2中的操作都沒有回滾

解決方法

方法一:在service方法中捕獲異常,同時向外拋出運行時異常

@Transactional(rollbackFor = {Exception.class})
public void insertData() throws Exception {
?? ?try {
?? ??? ?// 業(yè)務代碼1
?? ??? ?business1();
?? ??? ?
?? ??? ?// 業(yè)務代碼2
?? ??? ?business2();
?? ??? ?
?? ??? ?// 業(yè)務代碼3
?? ??? ?business3();
?? ?} catch(Exception e) {
?? ??? ?throw new RuntimeException(e);
?? ?}
}

方法二:在service方法中捕獲異常,同時手動回滾事務

service手動回滾問題

如果對spring配置了service層事物的管理。

在一些業(yè)務中需要回滾,正常來說拋出一個運行時異常即可

throw new RuntimeException();

只是這樣的話代碼就結束了,如果要返回給用戶錯誤信息,不太方便,這時可以添加如下代碼,在catch中手動回滾

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

這樣既能正常返回錯誤信息,而又保持了事物的原子性。 

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

相關文章

  • springboot post接口接受json時,轉換為對象時,屬性都為null的解決

    springboot post接口接受json時,轉換為對象時,屬性都為null的解決

    這篇文章主要介紹了springboot post接口接受json時,轉換為對象時,屬性都為null的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • MyBatisPlus 查詢selectOne方法實現(xiàn)

    MyBatisPlus 查詢selectOne方法實現(xiàn)

    本文主要介紹了MyBatisPlus 查詢selectOne方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • java文字轉語音播報功能的實現(xiàn)方法

    java文字轉語音播報功能的實現(xiàn)方法

    這篇文章主要給大家介紹了關于java文字轉語音播報功能的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • Java零基礎教程之Windows下安裝、啟動Tomcat服務器方法圖解(免安裝版)

    Java零基礎教程之Windows下安裝、啟動Tomcat服務器方法圖解(免安裝版)

    這篇文章主要介紹了Windows系統(tǒng)下安裝、啟動、注冊服務、停止 Tomcat操作的所有方法,本文通過圖文并茂的方式給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2016-09-09
  • Java 的可變參數(shù)方法詳述

    Java 的可變參數(shù)方法詳述

    這篇文章主要介紹了Java 的可變參數(shù)方法,可變參數(shù)只能作為函數(shù)的最后一個參數(shù),在其前面可以有也可以沒有任何其他參數(shù),由于可變參數(shù)必須是最后一個參數(shù),所以一個函數(shù)最多只能有一個可變參數(shù),下面我們一起進入文章了解更多關于可變參數(shù)的內容吧
    2022-02-02
  • 多線程Thread,Runnable,Callable實現(xiàn)方式

    多線程Thread,Runnable,Callable實現(xiàn)方式

    這篇文章主要為大家詳細介紹了Java多線程如何實現(xiàn)Thread,Runnable,Callable的方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java超詳細講解類變量和類方法

    Java超詳細講解類變量和類方法

    這篇文章主要介紹了JAVA類變量及類方法代碼實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-05-05
  • Java8深入學習之熟透Optional

    Java8深入學習之熟透Optional

    這篇文章主要給大家介紹了關于Java8深入學習之熟透Optional的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java8具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Java?API操作Hdfs的示例詳解

    Java?API操作Hdfs的示例詳解

    這篇文章主要介紹了Java?API操作Hdfs詳細示例,遍歷當前目錄下所有文件與文件夾,可以使用listStatus方法實現(xiàn)上述需求,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • StringBuilder為什么線程不安全深入講解

    StringBuilder為什么線程不安全深入講解

    這篇文章主要給大家介紹了關于StringBuilder為什么線程不安全的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用StringBuilder線程具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08

最新評論