3
我知道事務管理器中的默認回滾策略會在發生RuntimeException時自動回滾。雖然,如果我有一個允許傳播的檢查異常會發生什麼?檢查異常在事務中傳播時會發生什麼?
我知道事務管理器中的默認回滾策略會在發生RuntimeException時自動回滾。雖然,如果我有一個允許傳播的檢查異常會發生什麼?檢查異常在事務中傳播時會發生什麼?
然而,請注意Spring框架的事務 基礎架構代碼將默認情況下,只有標記事務中運行的情況下 回滾,未檢查異常;也就是當 拋出的異常是RuntimeException的一個實例或子類。 (錯誤也會 - 默認情況下會導致回滾)。檢查了 從事務性方法拋出的異常不會導致在回退的事務中導致 。
即使檢查拋出異常,彷彿一切都是鳥語花香將提交事務。
如果需要,您可以配置回滾檢查異常。
像
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="false" rollback-for="AnyCheckedException"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
時AnyCheckedException
拋出將執行回滾。
這可能有所幫助:Spring transaction management with checked and unchecked exception