1、访问权限不是public
2、方法用final修饰了,因为spring是有aop的,那aop是通过jdk或者cglib动态代理的,那在代理类中就无法重写这个方法,那就不能添加事务。
3、同一个类里,A方法直接调用B方法:就相当于this.方法,那this相当于new了一个当前的对象,那方法拥有事务是因为aop生成了代理对象,自己new的是不行的。
4、未被Spring管理,如果你的类没有加@service等等这些注解,那这个类是没有被Spring管理的
5、表不支持事务,那存储引擎是Myisam的是不支持事务的。
6、使用不支持事务的事务传播特性,7种事务传播特性,只有Required、Required New、Nested是支持当前事务的。
7、自己吞了异常,你自己去抛异常,那么Spring会认为程序是正常运行的,因为Spring事务正常回滚必须要抛出它的异常。
8、手动抛了别的异常,也就是抛错了异常,Spring事务默认回滚RuntimeException和Error,普通的Exception是不会回滚的。
9、自定义的回滚异常。