spring在service層的方法報錯事務(wù)不會回滾的解決
spring在service層方法報錯事務(wù)不會回滾
@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方法時,business3中的代碼執(zhí)行出錯了,business1和business2中的操作都沒有回滾
解決方法
方法一:在service方法中捕獲異常,同時向外拋出運行時異常
@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方法中捕獲異常,同時手動回滾事務(wù)
service手動回滾問題
如果對spring配置了service層事物的管理。
在一些業(yè)務(wù)中需要回滾,正常來說拋出一個運行時異常即可
throw new RuntimeException();
只是這樣的話代碼就結(jié)束了,如果要返回給用戶錯誤信息,不太方便,這時可以添加如下代碼,在catch中手動回滾
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
這樣既能正常返回錯誤信息,而又保持了事物的原子性。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot post接口接受json時,轉(zhuǎn)換為對象時,屬性都為null的解決
這篇文章主要介紹了springboot post接口接受json時,轉(zhuǎn)換為對象時,屬性都為null的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
MyBatisPlus 查詢selectOne方法實現(xiàn)
本文主要介紹了MyBatisPlus 查詢selectOne方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
java文字轉(zhuǎn)語音播報功能的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于java文字轉(zhuǎn)語音播報功能的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Java零基礎(chǔ)教程之Windows下安裝、啟動Tomcat服務(wù)器方法圖解(免安裝版)
這篇文章主要介紹了Windows系統(tǒng)下安裝、啟動、注冊服務(wù)、停止 Tomcat操作的所有方法,本文通過圖文并茂的方式給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2016-09-09
多線程Thread,Runnable,Callable實現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了Java多線程如何實現(xiàn)Thread,Runnable,Callable的方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08

