美文网首页Java 杂谈
Spring Boot之事务管理

Spring Boot之事务管理

作者: WinkTink | 来源:发表于2019-05-27 17:44 被阅读0次

    一. 什么是事务?

            我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作数据的并不可靠,需要在这种情况下进行回退。

            事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要有发生异常就回退到事务开始未进行操作的状态。

            事务管理是Spring框架中最为常用的功能之一,我们在使用Spring Boot开发应用时,大部分情况下也都需要使用事务。

    二. 快速入门?

            在Spring Boot中,当我们使用了spring-boot-starter-jdbc或spring-boot-starter-data-jpa依赖的时候,框 架会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager。所以我们不需要任何额外 配置就可以用@Transactional注解进行事务的使用。

    三.  传播行为

            事务的第一个方面是传播行为(propagation behavior)。当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。Spring定义了七种传播行为:

    3.1  PROPAGATION_REQUIRED (required , 必须   默认值)

            A如果有事务,B将使用该事务;

            如果A没有事务,B将创建一个新的事务。

    3.2  PROPAGATION_SUPPORTS(supports ,支持)

            A如果有事务,B将使用该事务;

            如果A没有事务,B将以非事务执行。

    3.3  PROPAGATION_MANDATORY(mandatory ,强制)

            A如果有事务,B将使用该事务;

            如果A没有事务,B将抛异常。

    3.4  PROPAGATION_REQUIRES_NEW (requires_new,必须新的)

            如果A有事务,将A的事务挂起,B创建一个新的事务;    

            如果A没有事务,B创建一个新的事务。

    3.5  PROPAGATION_NOT_SUPPORTED (not_supported ,不支持)

            如果A有事务,将A的事务挂起,B将以非事务执行;

            如果A没有事务,B将以非事务执行。

    3.6  PROPAGATION_NEVER (never,从不)

            如果A有事务,B将抛异常;

            如果A没有事务,B将以非事务执行。

    3.7  PROPAGATION_NESTED (nested ,嵌套)

            A和B底层采用保存点机制,形成嵌套事务。

           外层事务的回滚可以引起内层事务的回滚。而内层事务的异常并不会导致外层事务的回滚,它是一个真正的嵌套事务。

    四. 隔离级别

    相关文章

      网友评论

        本文标题:Spring Boot之事务管理

        本文链接:https://www.haomeiwen.com/subject/okghtctx.html