spring事务管理实现本身是基于AOP实现的,但是在注解式配置与使用的过程中,发生事务配置不生效的问题,大概排查了一下原因:
1.Mysql的问题:
1)MySQL中只有InnoDb引擎支持事务
mysql> show engines;
保证你的默认引擎是InnoDB
2) Mysql的autocommit 问题
mysql> show variables like 'autocommit';
如果Value的值为ON表示每个提交都被当做一个单独的事务自动执行,你可以通过设置
mysql> set autocommit = 0;
来改变事务提交的模式,这个时候表示事务提交需要显示的声明事务才能提交。
2.Bean的注入问题:
如果你的事务注解在某个方法之上,而这个方法所属的类是在事务加载之前加载的,那么你的注解是不生效的。