Spring的事務管理對何種異常進行回滾
一、結論
Spring的事務管理默認隻對出現運行期異常(java.lang.RuntimeException及其子類)進行回滾。
如果一個方法拋出Exception或者Checked異常,Spring事務管理默認不進行回滾。
關於異常的分類請參看本博客的《Java異常分類》https://blog.csdn.net/woshixuye/article/details/8230407
二、改變默認方式
在@Transaction注解中定義noRollbackFor和RollbackFor指定某種異常是否回滾。
@Transaction(noRollbackFor=RuntimeException.class)
@Transaction(RollbackFor=Exception.class)
這樣就改變了默認的事務處理方式。
三、啟示
這就要求我們在自定義異常的時候,讓自定義的異常繼承自RuntimeException,這樣拋出的時候才會被Spring默認的事務處理準確處理。
最後更新:2017-04-03 20:19:49