spring事务失效场景梳理

spring事务失效场景梳理

  1. @Transactional 应用在非 public 方法上

spring 事务底层在扫描 @Transactional 注解时会直接不会获取非 public 的方法上的 @Transactional 注解的属性信息

  1. @Transactional 的 rollbackFor 设置
  • 默认不设置的话,在 Error 和 RunTimeException 错误时会触发事务,其他异常不会;
  • rollbackFor 指定异常类型,则只会在该异常类型出现时触发事务;
  1. 同一个类中的方法调用

同一个类中,methodA 没有设置事务,methodB 设置了事务,methodA 调用 methodB 时,事务失效;

只有当事务方法被当前类以外的代码调用时,才会由 spring 生成代理对象管理事务;

  1. 异常被 catch 住了,不会再触发事务

在业务代码中一般不需要 catch 异常,如果非要 catch 一定要抛出 throw new RunTimeException() ,或注解中指定异常类型
@Transactional(rollbackFor=Exception.class),否则会导致事务失效。

  1. 数据库存储引擎不支持事务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值