事务不生效的情况

  1. 确认创建的mysql数据库表引擎是InnoDB,MyISAM不支持
  2. 调用的方法必须是public,否者事务不起作用
  3. 方法用final修改
    @Transactional
    public final void demo(){}
  4. spring切点是否配置错误,或者使用了springMVC,可能是context:component-scan重复扫描引起的
  5. 抛出一个runtimeException才能回滚,Spring使用声明市事务处理,默认情况下,如果被注解的数据库操作方法中发生了unchecked异常,所有的数据库操作将rollback;如果发生的异常是checked异常,默认情况下爱数据库还是会提交
    Transactional的异常控制,默认是Check Exception 不回滚,unCheck Exception回滚 
    如果我想check异常也想回滚怎么办,注解上面写明异常类型即可@Transactional(rollbackFor=Exception.class) 类似的还有norollbackFor,自定义不回滚的异常。

    Java异常体系unchecked异常check异常_XuJiangDong-CSDN博客_check异常
  6. Spring的事务传播策略在内部方法调用时将不起作用
    a类没有@Transactional,b类有@Transactional
    a类调用b类,a类报错不会有回滚


    Spring的7种事务传播行为类型: Spring的7种事务传播行为类型_hsgao_water的博客-CSDN博客_事务传播行为类型

    Spring3注解事务失效解决方案: Spring3注解事务失效解决方案_LXDEisenhower_51CTO博客

  7. 在该Service类中注入自己

     

  8. 在该Service类中使用AopContext.currentProxy()获取代理对象

  9. 未被Spring容器管理
    通常情况下,我们通过@Controller、@Service、@Component、@Repository等注解,可以自动实现bean实例化和依赖注入的功能。

    参考
    Spring事务不生效问题汇总_大树叶 技术专栏-CSDN博客_事务不生效
    百度安全验证

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值