zoukankan      html  css  js  c++  java
  • Spring事务注解@Transactional失效的问题

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

    @Scope(proxyMode= ScopedProxyMode.TARGET_CLASS)
    

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

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

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

    只要出现异常就进行回滚

  • 相关阅读:
    oracle 查看表空间使用率
    解决linux下vim中文乱码问题
    linux 时间同步
    oracle ho与mysql system命令
    mysql 重置root密码
    2020 10 26
    2020 10 24
    2020 10 23
    2020 10 22
    2020 10 21
  • 原文地址:https://www.cnblogs.com/lz2017/p/11657880.html
Copyright © 2011-2022 走看看