java - 关于MyBatis通过Spring切面做事物管理的问题(抛出了异常却不回滚,切面没切到也提交了,用Junit测试)
本文介绍了java - 关于MyBatis通过Spring切面做事物管理的问题(抛出了异常却不回滚,切面没切到也提交了,用Junit测试)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
1、Mybatis-Spring配置
2、测试代码
在上图代码151行运行完后,在154行跑出了RuntimeException,但是数据依然提交到了MySQL,没有回滚
3、说明:
mysql的autocommit功能已经关闭
4、疑问:
1)为什么上述测试抛出了一场数据没有回滚?
2)我把切面的切点方法名称如method="add"改成method="badd",数据还是会提交,而且不回滚,按理说,切面没切到是没有事物的,即使junit跑的过程中数据添加成功了,跑完后数据应该还是没提交的状态。因为不用切面Mybatis只能单独用SqlSession的事物,前提是需要自己声明。
5、日志:
1)切面,method="add"
日志:
异常:
2)不用切面,method="badd",可以看到下图日志中并没有commit日志
解决方案
额 你在织入的方法中出错好不好,你这样抛错当然不回滚
这篇关于java - 关于MyBatis通过Spring切面做事物管理的问题(抛出了异常却不回滚,切面没切到也提交了,用Junit测试)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文