• Spring事务注解@Transactional失效的问题


    在项目中发现事务失效,使用@Transactional注解标注的Service业务层实现类方法全部不能回滚事务了,最终发现使用因为Spring与shiro进行整合之后导致的问题,将所有的Service层实现类都添加如下注解

    @Scope(proxyMode= ScopedProxyMode.TARGET_CLASS)
    

    将代理方式换成CGLib的代理方式之后得以解决,最终不明原因,如有看到这篇博客并知道答案的朋友请留言告知

    如果事务不能回滚,也需要考虑如下几点:

    • 表得存储引擎为MyISAM是没有事务的,需要使用InnoDB
    • 加事务的方法中手动try...catch住了异常,只有将异常抛出来(无论是主动还是被动)事务才能回滚
    • Spring事务默认回滚的是RunTimeException运行时异常,如果是check异常是不会回滚的,可以指定回滚异常,如下
    @Transactional(rollbackFor = Exception.class)
    

    只要出现异常就进行回滚

  • 相关阅读:
    Maven配置始终获取最新版本
    使用SpringBoot
    SpringBoot文档综述
    35_方法的使用
    34_结构体指针类型的使用
    33_同名字段的使用
    32_匿名字段的使用
    31_结构体的使用
    30_map的使用
    29_猜字游戏
  • 原文地址:https://www.cnblogs.com/lz2017/p/11657880.html
Copyright © 2020-2023  润新知