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

spring事務(wù)異?;貪L實(shí)例解析

 更新時(shí)間:2018年01月04日 10:49:21   作者:Leesire  
這篇文章主要介紹了spring事務(wù)異?;貪L實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下

最近遇到了事務(wù)不回滾的情況,我還考慮說(shuō)JPA的事務(wù)有bug?我想多了.......

為了打印清楚日志,很多方法我都加tyrcatch,在catch中打印日志。但是這邊情況來(lái)了,當(dāng)這個(gè)方法異常時(shí)候日志是打印了,但是加的事務(wù)卻沒(méi)有回滾。

例:

類(lèi)似這樣的方法不會(huì)回滾(一個(gè)方法出錯(cuò),另一個(gè)方法不會(huì)回滾):

if(userSave){     
  try {     
    userDao.save(user);     
    userCapabilityQuotaDao.save(capabilityQuota);     
   } catch (Exception e) {     
    logger.info("能力開(kāi)通接口,開(kāi)戶(hù)異常,異常信息:"+e);     
   }     
 } 

下面的方法回滾(一個(gè)方法出錯(cuò),另一個(gè)方法會(huì)回滾):

if(userSave){     
   try {     
    userDao.save(user);     
    userCapabilityQuotaDao.save(capabilityQuota);     
    } catch (Exception e) {     
    logger.info("能力開(kāi)通接口,開(kāi)戶(hù)異常,異常信息:"+e);     
    throw new RuntimeException();     
   }     
} 

或者:

if(userSave){     
  try {     
    userDao.save(user);     
    userCapabilityQuotaDao.save(capabilityQuota);     
  } catch (Exception e) {     
    logger.info("能力開(kāi)通接口,開(kāi)戶(hù)異常,異常信息:"+e);     
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();     
  }     
 } 

為什么不會(huì)滾呢??是對(duì)spring的事務(wù)機(jī)制不明白。??!

*****默認(rèn)spring事務(wù)只在發(fā)生未被捕獲的runtimeexcetpion時(shí)才回滾。******

springaop異常捕獲原理:被攔截的方法需顯式拋出異常,并不能經(jīng)任何處理,這樣aop代理才能捕獲到方法的異常,才能進(jìn)行回滾,默認(rèn)情況下aop只捕獲runtimeexception的異常,但可以通過(guò)。

配置來(lái)捕獲特定的異常并回滾

換句話(huà)說(shuō)在service的方法中不使用trycatch或者在catch中最后加上thrownewruntimeexcetpion(),這樣程序異常時(shí)才能被aop捕獲進(jìn)而回滾

解決方案:

方案1.例如service層處理事務(wù),那么service中的方法中不做異常捕獲,或者在catch語(yǔ)句中最后增加thrownewRuntimeException()語(yǔ)句,以便讓aop捕獲異常再去回滾,并且在service上層(webservice客戶(hù)端,view層action)要繼續(xù)捕獲這個(gè)異常并處理

方案2.在service層方法的catch語(yǔ)句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();語(yǔ)句,手動(dòng)回滾,這樣上層就無(wú)需去處理異常(現(xiàn)在項(xiàng)目的做法)

總結(jié)

以上就是本文關(guān)于spring事務(wù)異?;貪L實(shí)例解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

最新評(píng)論

伊川县| 宜君县| 沙河市| 沙雅县| 淮阳县| 乌拉特中旗| 乐业县| 当涂县| 林西县| 西城区| 疏勒县| 舟山市| 巴林右旗| 饶阳县| 叙永县| 康乐县| 莱阳市| 邮箱| 鸡东县| 西乡县| 建宁县| 淅川县| 类乌齐县| 阳原县| 彭泽县| 灵丘县| 介休市| 新余市| 河北省| 台湾省| 比如县| 新邵县| 嘉兴市| 西吉县| 德州市| 朝阳市| 台山市| 香港| 新绛县| 长葛市| 炉霍县|