一、结论
Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException 及其子类)进行回滚。
如果一个方法抛出Exception或者Checked异常,Spring事务管 理默认不进行回滚。
二、改变默认方式
在@Transaction注解中定义noRollbackFor 和RollbackFor指定某种异常是否回滚。
@Transaction(noRollbackFor=RuntimeException .class)
@Transaction(RollbackFo r=Exception.class )
这样就改变了默认的事务处理方式。
三、启示
Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException 及其子类)进行回滚。
如果一个方法抛出Exception或者Checked异常,Spring事务管 理默认不进行回滚。
二、改变默认方式
在@Transaction注解中定义noRollbackFor 和RollbackFor指定某种异常是否回滚。
@Transaction(noRollbackFor=RuntimeException .class)
@Transaction(RollbackFo r=Exception.class )
这样就改变了默认的事务处理方式。
三、启示
这就要求我们在自定义异常的时候,让自定义的异常继承自RuntimeException,这样抛出的时候才会被Spring默认的事务处理准确处理。