# 《Spring核心技术》第37章:七大场景深度分析Spring事务嵌套最佳实践

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码地址:https://github.com/binghe001/spring-annotation-book/tree/master/spring-annotation-chapter-37 (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

大家好,我是冰河~~


  • 本章难度:★★★★☆

  • 本章重点:从根本上彻底理解Spring嵌套事务的最佳实践方式与最佳案例。


本章目录如下所示:

  • 学习指引
  • 最佳实践
    • 准备工作
    • 最佳实践场景一
    • 最佳实践场景二
    • 最佳实践场景三
    • 最佳实践场景四
    • 最佳实践场景五
    • 最佳实践场景六
    • 最佳实践场景七
  • 总结
  • 思考
  • VIP服务

# 一、学习指引

你了解过Spring嵌套事务的最佳实践吗?

在基于Spring开发应用程序时,涉及到事务操作时,最常使用的就是在方法上标注@Transactional注解。但是,有时由于项目逻辑比较复杂,调用的方法比较多,可能就会出现外层方法标注了@Transactional注解,而内层方法也会标注@Transactional注解的现象,造成事务的嵌套,如果对Spring事务的传播机制不太了解的话,可能就会造成实际的结果数据和预期的结果数据不一致。

本章,就以案例的形式专门聊聊Spring嵌套事务的最佳实践。

# 二、最佳实践

以案例的形式来说明Spring事务嵌套的最佳实践!

本章的案例程序以大家最熟悉的下单减库存为例来说明Spring嵌套事务的最佳实践案例。

# 2.1 准备工作

这里以典型的电商场景为例。电商场景中,一个典型的操作就是下单减库存。本节就以下单减库存的场景为例,介绍Spring嵌套事务的最佳实践,并且说明Spring事务传播机制的设计精髓。

(1)创建Maven项目spring-annotation-chapter-37,并在pom.xml文件中添加Maven依赖。

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${jdbc.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>${mybatis.spring.version}</version>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
    </dependency>

</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码