Spring 事务管理的实现分析

1、Spring 事务管理实现的基本模型

在同一个 connection 里,【开启事务】->【执行method】->【回滚 OR 提交】

2、注意点

  • 线程安全,每个线程同一个数据源只有一个connection 。当线程在执行一个有事务的方法时,通过数据源去获取connection。
  • 仅支持单个数据源的事务控制
  • spring 抽象层 AbsPlatformTransactionManager,通过模板方法,由子类实现具体的【begin Transaction】【rollBack】【commit】, 由第三方实现,例如:DataSourceTransactionManager 、HibernateTransactionManager
  • spring容器启动时,注入了数据源data source  
  • 最终实现的底层还是 java JDBC 的 connction 提供的方法实现,connection.createStatement(),cooncetion.commit(); connection.rollback().

3、设计类图之设计模式

  • 常用的事务实现是 DataSourceTransactionManager.    


4、spring 如何知晓 【method】 添加了事务?

  1. 添加事务的方式: 注解配置事务以及【事务属性,或事务定义】、xml 通过【pattern】模式匹配方式配置拦截点,同时配置了统一的需要的【事务属性】,这里暂不列举。例如:xml 配置事务驱动注解,在代码中使用注解 @Transactional
  2. 下图是【TransactionAspectSupport】 实现在事务中执行方法,也可能没有创建事务。

  •  getTransactionAttribute(Method method, Class<?> targetClass) 获取当前 method 的事务属性。
  • 根据事务属性实现【三步走策略】   


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值