您的位置:首页 > 编程语言 > Java开发

Spring 事务管理的实现分析

2018-03-05 16:52 417 查看

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】 添加了事务?

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



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息