1、Spring的默认事务机制,当出现unchecked异常时候回滚,checked异常的时候不会回滚;
unchecked异常包括error和runtime异常;checked异常包括IOException异常,需要try catch或向上抛出异常。程序在抛出runtime异常的时候才会进行回滚,其他异常不会回滚,当然可以通过配置让所有异常都回滚:
@Transaction(rollbackFor = {Exception.class})
2、当有try catch后捕获了异常,事务不会回滚,如果不得不在service层写try catch后throw new RuntimeException让事务回滚。
3、基于注解的事务:
Transactional的异常控制,默认是Check Exception 不回滚,unCheck Exception回滚
如果配置了rollbackFor 和 noRollbackFor 且两个都是用同样的异常,那么遇到该异常,还是回滚
rollbackFor 和noRollbackFor 配置也许不会含盖所有异常,对于遗漏的按照Check Exception 不回滚,unCheck Exception回滚
关于回滚的配置,也可以参考 慕课网-Spring事务管理-6-2声明式事务管理。
转自:https://blog.csdn.net/qq_34406670/article/details/78984247