Spring 事务不回滚的几个原因

1、默认情况下spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。  

2、如果你抛出的异常时Exception,是不会回滚的,需要抛出一个RuntimeException

3、如果Service的第一层方法为非事务方法,则这个方法中调用其他当前类的包含事务的方法,当发生异常时是不会回滚的。

解决方法时通过BeanFactory.getBean("***");重新获取当前类的一个实例,再调用对应的事务方法。

4、如果Service的第一层方法为非事务方法,则这个方法中调用其他类的包含事务的方法,数据可以回滚。

你可能感兴趣的:(Spring 事务不回滚的几个原因)