spring事务失效解决方案,spring事务不生效

  spring事务失效解决方案,spring事务不生效

  1.如果使用mysql,Spring事务最终依赖的数据库的执行引擎是innodb因为只有innoDB支持事务。

  2.Spring的事务原理是aop,所以处理室应该由bean中的Spring容器来管理;New自己的对象肯定不行。

  3.Spring事务标记@Transactional必须在public方法上进行注释。私有的、受保护的、默认的和最终修饰的方法或类,以及静态方法,事务将是无效的。

  4.如果在同一个类中调用内部方法,事务将无效。这被调用,下图中updateOrder上的事务将无效。您可以定义另一个服务,并调用服务中的updateOrder来生效。

  5.多线程调用事务将无效。事务建立在同一个数据链路上,多个线程可能得到的连接不是同一个连接,所以事务会无效。下图中的DoOtherThing()抛出异常,无法使add回滚。

  6.事务传播。当@Transactional被注释时,您可以指定传播参数,扩展其配置不支持事务。

  传播。NOT_SUPPORTED,这种类型的传播功能不支持事务。如果有事务,将抛出异常。

  目前,只有这三个传播特性会创建新的事务:nested、requires _ new和required。

  7.遇到异常时,如果是RuntimeException,则回滚;不然就不行了。除非@ transactional(roll back for=exception . class)是自定义的,否则此配置仅限于可抛出的异常类及其子类。

  8.如果你自己吞下了异常,试一试抓住它,自然就不会滚了。

  9.嵌套的事务太多,导致回滚太多。我以为我会像下面这样回滚doOtherthing(),但是如果doOtherThing抛出异常,收到add,也会回滚。更好的方法是在roleService.doOtherThing()处捕获异常。

  补充说明:

  而MySQL引擎是MyISAM,事务就不行了,因为MyISAM不支持事务,但是InnoDB引擎支持。Note @ Tractional只能在事务生效前添加到public修饰的方法中。如果将其添加到protect和private等非公共修饰方法中,则该事务将无效。如果异常是在事务打开的情况下通过使用方法中的try-catch语句块捕获的,并且该异常未被引发到外层,则该事务将无效。不同类之间调用方法时,异常发生在没有事务的方法A中,但不是被调用方法B生成的,被调用方法B的事务无效。只有在打开事务的方法B中出现异常时,事务才有效。总结

  这就是这篇关于Spring事务失败场景的文章。有关Spring事务失败场景的更多信息,请搜索Popular IT以前的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: