1、默认情况下spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。
2、如果你抛出的异常时Exception,是不会回滚的,需要抛出一个RuntimeException
3、如果Service的第一层方法为非事务方法,则这个方法中调用其他当前类的包含事务的方法,当发生异常时是不会回滚的。
解决方法时通过BeanFactory.getBean("***");重新获取当前类的一个实例,再调用对应的事务方法。
4、如果Service的第一层方法为非事务方法,则这个方法中调用其他类的包含事务的方法,数据可以回滚。