spring boot 事务的使用:
可以在类上加注解:
也就是启动 类上加:
@EnableTransactionManagement
事务需要回滚的方法上加注解:
@Transactional
如果事务不回滚,可以手动回滚 也就是在 catch 里面加入代码完成手动回滚:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
注意几点:
1、serviceImpl 方法必须public 不然可能事务失效
2、尽量在 impl 里面try catch 里面使用事务
3、表 引擎 使用:InnoDB
4、catch 如果在controller 中 使用 exception 来捕获异常,并且在controller 中来使用事务的话可能不会回滚
因为全被Exception 这个异常捕获并吞掉,导致spring异常抛出触发事务回滚策略失效。
5、事务最好使用在 service 里面使用,不要在controller 中