Spring的事务管理对何种异常进行回滚

一、结论

Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚。

如果一个方法抛出Exception或者Checked异常,Spring事务管理默认不进行回滚。

关于异常的分类请参看本博客的《Java异常分类》http://woshixy.blog.51cto.com/5637578/1071966

 

 

二、改变默认方式

在@Transaction注解中定义noRollbackFor和RollbackFor指定某种异常是否回滚。

@Transaction(noRollbackFor=RuntimeException.class)

@Transaction(RollbackFor=Exception.class)

这样就改变了默认的事务处理方式。

 

 

三、启示

这就要求我们在自定义异常的时候,让自定义的异常继承自RuntimeException,这样抛出的时候才会被Spring默认的事务处理准确处理。

你可能感兴趣的:(spring,事务,异常,回滚)