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.    

Spring 事务管理的实现分析_第1张图片

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

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

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


你可能感兴趣的:(Spring,Transactional,Java,Spring,注解,Spring,Transactional,SPring,事务管理实现,Transaction)