Spring事务失效的 8 大原因,这次可以吊打面试官了!
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天再来一篇《 吊打面试官 》系列,这次真的要吊打了,哈哈!(看往期吊打系列请在后台回复: 吊打 ,我会陆续更新……) 前几天栈长不是发了一篇文章,里面有一个关于事务失效的问题: 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 其中有个热心粉丝留言分享了下,我觉得总结得有点经验,给置顶了: 以上留言来源微信公众号:Java技术栈,关注一起学Java! 但是我觉得还是总结得不够全,今天栈长我再总结一下,再延着这位粉丝的总结再补充完善一下,不用说,我肯定也不见得总结全,但希望可以帮忙有需要的人。 1、数据库引擎不支持事务 这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。 根据 MySQL 的官方文档: https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html 从 MySQL 5.5.5 开始的默认存储引擎是:InnoDB,之前默认的都是:MyISAM,所以这点要值得注意,底层引擎不支持事务再怎么搞都是白搭。 2、没有被 Spring 管理 如下面例子所示: // @Service public class