springboot事务@transactional不生效解决

项目开发时遇到的@transactional不生效问题整理

没开启@EnableTransactionManagement注解

springboot事务@transactional不生效解决
解决方法:在启动类上添加@EnableTransactionManagement注解

多数据源没有指定事务数据源

很多项目都是多数据源项目。配置多数据源后,事务注解上没有选中数据源。
这也是我遇到的问题。
springboot事务@transactional不生效解决
springboot事务@transactional不生效解决
在事务注解上加上数据源。

异常不满足回滚要求

springboot默认检测RuntimeException和Error进行回滚,如果产生的异常不是这两类及其子类,springboot不会进行回滚。
解决办法:手动加上异常条件rollbackFor = {BizException.class,Error.class,RuntimeException.class}
其中 BizException extends Exception

Mysql数据库的引擎不支持

springboot事务@transactional不生效解决
默认InnoDB支持事务。
解决办法:手动修改为InnoDB,或者在建表时选定InnoDB为默认引擎。