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

spring在service層的方法報(bào)錯(cuò)事務(wù)不會(huì)回滾的解決

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

spring在service層方法報(bào)錯(cuò)事務(wù)不會(huì)回滾

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

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

解決方法

方法一:在service方法中捕獲異常,同時(shí)向外拋出運(yùn)行時(shí)異常

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

方法二:在service方法中捕獲異常,同時(shí)手動(dòng)回滾事務(wù)

service手動(dòng)回滾問題

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

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

throw new RuntimeException();

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

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

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

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

相關(guān)文章

  • springboot post接口接受json時(shí),轉(zhuǎn)換為對象時(shí),屬性都為null的解決

    springboot post接口接受json時(shí),轉(zhuǎn)換為對象時(shí),屬性都為null的解決

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

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

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

    java文字轉(zhuǎn)語音播報(bào)功能的實(shí)現(xiàn)方法

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

    Java零基礎(chǔ)教程之Windows下安裝、啟動(dòng)Tomcat服務(wù)器方法圖解(免安裝版)

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

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

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

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

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

    Java超詳細(xì)講解類變量和類方法

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

    Java8深入學(xué)習(xí)之熟透Optional

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

    Java?API操作Hdfs的示例詳解

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

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

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

最新評(píng)論