Spring Transaction詳解 – 異常發生時的事務回滾機制

chanjarster發表於2017-01-23

相關文件:Spring官方文件

相關程式碼:github

在Spring官方文件中說到,當Transaction內發生unchecked exception的時候,會自動rollback,但是當Transaction內發生checked exception時,是不會自動rollback的。

注意,這種處理機制和直覺是不同的,初學者甚至有經驗的開發人員直覺上會認為只要Transaction內發生異常,都會自動rollback。

其實仔細想想Spring這樣處理是有意為之的,因為unchecked exception是一種出乎意料的異常(RuntimeException),這類異常在java語言層面不強制catch,那麼出現這種異常的時候spring自然應該自動rollback。

但是checked exception不同,這類異常在java語言層面是強制catch的,也就是說強制呼叫方對這類異常做處理,所以此時Spring就將處理權轉移給了呼叫方,而不是自動rollback。

相關文章