更新時(shí)間:2022-09-21 09:31:13 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3557次
在Java學(xué)習(xí)中大家會(huì)學(xué)到Spring教程,那么,Spring手動(dòng)回滾事務(wù)的方式有哪些?動(dòng)力節(jié)點(diǎn)小編來告訴大家。
在service層方法的catch語(yǔ)句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();語(yǔ)句,手動(dòng)回滾,這樣上層就無需去處理異常(現(xiàn)在項(xiàng)目的做法)
例如service層處理事務(wù),那么service中的方法中不做異常捕獲,或者在catch語(yǔ)句中最后增加throw new RuntimeException()語(yǔ)句,以便讓aop捕獲異常再去回滾,并且在service上層(webservice客戶端,view層action)要繼續(xù)捕獲這個(gè)異常并處理
//普通繳費(fèi)
@Transactional
public String commonMoney(Receipt rpt,Moneyrecord mors){
rpt.setState(1);
int a=dao.insert(rpt);
if(a<=0) return"繳費(fèi)失敗";
mors.setPric(rpt.getPic());
mors.setExid(rpt.getPid());
mors.setState(1);
boolean tf=mrs.custom(mors);
if(!tf){
//事務(wù)回滾
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return"余額不足";
}
return "OK";
}
設(shè)置回滾點(diǎn)進(jìn)行回滾事務(wù)
//設(shè)置回滾點(diǎn),
Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
//回滾到savePoint事務(wù)點(diǎn)
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
通過上述介紹,相信大家對(duì)Spring手動(dòng)回滾事務(wù)的方式已經(jīng)有所了解,大家如果想了解更多相關(guān)知識(shí),不妨來關(guān)注一下本站的Java在線學(xué)習(xí)技術(shù)文檔,里面的課程內(nèi)容從入門到精通,細(xì)致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)