1. 程式人生 > >Spring 事物丟擲Exception 異常時事物沒有回滾

Spring 事物丟擲Exception 異常時事物沒有回滾

Spring 宣告式事務 只針對  RuntimeException 異常丟擲時才會回滾事物,如果時Exception  丟擲時是不會回滾的。

如果想要讓exception 丟擲時也讓事物回滾 則可以在spring 配置檔案中新增 一個AOP  配置:

<tx:advice id="txAdvice" transaction-manager="transactionManager">
   <tx:attributes>
     <tx:method name="*" rollback-for="com.cn.exception.ChildrenException"/>
   </tx:attributes>
 </tx:advice>

這裡的 ChildrenException  是實現了 Exception 類的子類。

或者可以定義 定義 不會滾的 異常:

<tx:advice id="txAdvice">
    <tx:attributes>
       <tx:method name="update*" no-rollback-for="IOException"/>
       <tx:method name="*"/>
    </tx:attributes>
 </tx:advice>