news 2026/5/28 2:45:35

事务拦截器TransactionInterceptor、事务管理器和DataSource数据源三者的关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
事务拦截器TransactionInterceptor、事务管理器和DataSource数据源三者的关系

事务拦截器TransactionInterceptor、事务管理器和DataSource数据源三者的关系

  • 1. 事务拦截器 (TransactionInterceptor) - “交通指挥中心”
  • 2. 事务管理器 (PlatformTransactionManager) - “施工现场经理”
  • 3. DataSource数据源 - “资源仓库管理员”

事务拦截器(TransactionInterceptor)、事务管理器(PlatformTransactionManager)和DataSource数据源三者的关系,是Spring声明式事务的铁三角,它们之间协同工作。我们使用【动态数据源】的场景展示数据库操作的核心流程,如下所示:

  • 事物拦截器:事务拦截器TransactionInterceptor
  • 动态数据源:Sharding分库分表复杂SQL之数据源路由


1. 事务拦截器 (TransactionInterceptor) - “交通指挥中心”

  • 职责:它是AOP中的“通知”,负责拦截@Transactional方法调用,是事务处理的总协调者。但它不直接管理事务或连接。
  • 关键动作
    • 解析属性:确定方法需要的事务传播行为、隔离级别等。
    • 调用管理器:将具体事务工作(获取连接、提交、回滚)委托给事务管理器(PlatformTransactionManager)。
    • 异常转换:将数据库或JDBC异常转换为Spring的统一事务异常。

2. 事务管理器 (PlatformTransactionManager) - “施工现场经理”

  • 职责:它是事务操作的具体执行者,是Spring事务抽象的核心接口。你配置的DataSourceTransactionManager是其最常见实现。
  • 关键动作
    • 管理生命周期:具体执行getTransaction(),commit(),rollback()
    • 连接绑定:在事务开启时,它会从DataSource获取连接,并通过TransactionSynchronizationManager.bindResource()将连接绑定到当前线程。这是保证同一个事务中使用同一连接的关键。
    • 同步管理:管理事务同步回调(如afterCommit)。

3. DataSource数据源 - “资源仓库管理员”

  • 职责:纯粹负责提供标准的java.sql.Connection连接对象。
  • 在你的项目中的关键:你配置的动态数据源AbstractRoutingDataSource)是其高级实现。
    • 它的核心方法是determineCurrentLookupKey()该方法被调用的时机,正是事务管理器在getTransaction()过程中向其获取连接时
    • 此时,它必须能从TransactionSynchronizationManager或你自定义的DataSourceContextHolder(本质也是ThreadLocal)中正确获取到之前由切面设置的数据源标识,才能返回正确的物理连接。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 13:32:03

深入Spring Boot源码(四):Starter机制与依赖管理深度解析

前言在前面的文章中,我们深入剖析了Spring Boot的自动配置机制。然而,自动配置的实现离不开另一个核心概念——Starter。Starter是Spring Boot生态系统的基石,它将相关的依赖聚合在一起,并与自动配置紧密结合,真正实现…

作者头像 李华
网站建设 2026/5/26 5:42:45

SAPUI5 1.71.78老版本的消费restful服务

为了兼容老浏览器,没用Javascript的现代fetch api,用的jquerycontroller.js代码如下sap.ui.define(["sap/ui/core/mvc/Controller","sap/ui/model/json/JSONModel","sap/m/MessageToast" ], function (Controller, JSONMo…

作者头像 李华
网站建设 2026/5/28 2:02:09

Qwen3-14B-MLX-4bit长文本处理与YaRN扩展

Qwen3-14B-MLX-4bit长文本处理与YaRN扩展 在当前AI模型“军备竞赛”愈演愈烈的背景下,一味追求参数规模已不再是唯一解。越来越多的企业开始意识到:一个能在本地稳定运行、支持复杂任务编排、同时具备超长上下文理解能力的中型模型,往往比“云…

作者头像 李华
网站建设 2026/5/26 4:39:21

php小程序红色文物活动文创产品商城系统APP_2fil7831

文章目录 具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 同行可拿货,招校园代理 php小程序红色文物活动文创产品商城系统APP_2fil7831 …

作者头像 李华
网站建设 2026/5/26 4:39:08

Excalidraw:手绘风格开源白板工具详解

Excalidraw:当手绘遇上数字白板 你有没有过这样的经历?开会时想快速画个架构图,却卡在工具复杂的菜单里;写技术文档时需要一张示意图,结果花两小时调线条对齐;团队头脑风暴,想法满天飞&#xf…

作者头像 李华
网站建设 2026/5/27 21:33:31

springboot基于微信小程序的员工签到企业项目多人协同办公系统

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 springboot基于微信小程序的员工签到企业项目多人协同办公…

作者头像 李华