news 2026/5/1 6:29:07

事务拦截器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/1 6:26:34

dynamic_cast, static_cast以及reinterpret_cast介绍

dynamic_cast 和 static_cast 是 C 中两种完全不同的类型转换运算符,它们在安全性、使用场景和运行时行为上有显著区别。 一、核心区别概览 特性 static_cast dynamic_cast 转换时机 编译时 运行时 安全性 不安全(程序员负责) 安全&#xff0…

作者头像 李华
网站建设 2026/5/1 6:26:51

Git Commit日志分析TensorRT社区活跃度趋势

Git Commit日志分析TensorRT社区活跃度趋势 在AI模型从实验室走向生产线的过程中,推理效率往往成为决定产品成败的关键瓶颈。一个训练得再完美的神经网络,若在实际部署中延迟过高、资源消耗过大,也难以支撑真实业务场景的需求。正因如此&…

作者头像 李华
网站建设 2026/4/23 18:39:41

基于Android平台的大学校园通APP的设计与实现(源码+lw+部署文档+讲解等)

课题介绍 本课题聚焦大学生校园生活服务信息分散、办事流程不透明、校内互动不足的痛点,设计实现基于 Android 平台的大学校园通 APP。系统以 Java 为核心开发语言,基于 Android 原生框架搭建移动端应用,搭配轻量后端服务架构,处理…

作者头像 李华
网站建设 2026/4/23 11:30:03

基于Android的招聘就业创业服务平台系统(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦高校毕业生求职、创业信息分散,企业招聘与人才匹配效率低的痛点,设计实现基于 Android 的招聘就业创业服务平台系统。系统以 Java 为核心开发语言,基于 Android 原生框架搭建移动端应用,搭配轻量后端服务架构&a…

作者头像 李华
网站建设 2026/4/30 18:54:03

Windows安装Docker Desktop并配置清华源拉取TensorFlow镜像

Windows 安装 Docker Desktop 并配置镜像加速拉取 TensorFlow 环境 在深度学习项目开发中,环境配置往往是第一步也是最令人头疼的一步。尤其是对于使用 Windows 系统的开发者来说,安装 Python、匹配 CUDA 与 cuDNN 版本、处理依赖冲突等问题常常耗费大量…

作者头像 李华
网站建设 2026/5/1 6:16:36

Qwen3-VL-8B如何解析PDF图表?实测文档智能新能力

Qwen3-VL-8B如何解析PDF图表?实测文档智能新能力 在企业日常运营中,我们每天都在和PDF打交道:财务报表、项目方案、产品说明书、科研论文……这些文档里藏着大量关键信息——尤其是那些用柱状图、折线图、饼图呈现的数据趋势。然而&#xff0…

作者头像 李华