问题描述:
1. spring 事务管理中@Transactional 注解在类的内部方法(未暴露给外界调的方法)使用,不会回滚事务
2. spring 事务管理 @Transactional 注解如果没有定义rollbackfor类型,受检异常的抛出不会导致事务回滚。
问题示例1:
再外界调用方法printTiger(),虽然内部方法抛出了异常,事务不会回滚。导致db还是插入了一条记录。
问题示例2:
解决方案:
编写一个工具类,遇到异常手动回滚事务。
工具类如下:
测试代码如下:
当testInsert方法抛出错误的时候,小工具内部将事务回滚。