spring事务什么时候会失效?


spring事务的原理是AOP,进行了切面增强,那么失效的根本原因时这个AOP不起作用了!常见情况如下集中:
1、发生自调用,类里面使用this调用本类的方法(this通常省略),此时这个this不是代理对象,而是UserService类本身,所以失效。
解决办法很简单,让this变成UserService的代理类即可。(即从spring的IOC容器中取出对象)
2、方法不是public的

@Transaction只能用于public的方法上,否则事务会失效,如果要用在非public上,可以开启AspectJ代理模式

3、数据库不支持事务 (Mysql的Myisam引擎)
4、没有被spring管理
5、异常被吃掉,事务不会回滚。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM