如何使用Spring事务
在serviceImpl方法上加Transactional注解
@Transactional(rollbackFor = Exception.class)
事务失效场景
- 数据库引擎不支持事务
对于Mysql数据库而言innodb支持事务,myisam不支持 - Service类没有交给Spring管理
spring事务是基于AOP - Service的方法必须是public,private、final、static方法不生效(private方法是用户私有的方法,用户自己去维护,static方法是类方法,不是spring 的bean)
- 必须在同一个线程里
以下代码不生效
@Transactional(rollbackFor = Exception.class)
public void f(){
new Thread(()->{
//....
}).start();
}
- 在同一个service中 非事务方法调用事务方法事务一定不生效
两个事务方法调用生效