SpringBoot @Transactional的rollbackFor屬性


1.簡單回顧Java Exception

該圖摘自:https://blog.csdn.net/zhangerqing/article/details/8248186

一方面,我們可以將異常分為運行時異常(RuntimeException)和非運行時異常(Exception中除了RuntimeException及其子類以外的)。另一方面,我們可以將異常分為受控異常(checked exceptions)和不受控異常(unchecked exceptions)。

受控異常(checked exceptions):就是非運行時異常,即Exception中除了RuntimeException及其子類以外的。

不受控異常(unchecked exceptions):RuntimeException和Error。

2.、rollbackFor屬性介紹

作者開發時遇到兩個疑問:1.已注解了@Transactional的事務仍會有“出現異常事務不回滾”的情況?例如mybatis的xml配置<selectKey>標簽錯誤時,運行報異常,但仍然能夠進行增加操作。2.Java阿里巴巴規范提示,事務需要進行手動回滾。為什么?

因此,經作者百度后,得知如下原因:

Spring框架的事務管理默認地只在發生不受控異常(RuntimeException和Error)時才進行事務回滾。也就是說,當事務方法拋出受控異常(Exception中除了RuntimeException及其子類以外的)時不會進行事務回滾。

rollbackFor屬性在這里就可以發揮它的作用了!

在類或方法前注解配置@Transactional(rollbackFor=Exception.class)就可以實現:

當發生受控異常(checked exceptions)時,事務也進行回滾。

 

“rollbackFor”相關知識摘自https://blog.csdn.net/qq_16605855/article/details/79653282

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM