spring-transaction源码详解

 
TransactionTemplate : 顶级接口 用户配置 PlatfromTransactionManager
 
PlatfromTransactionManager : 公共接口 用于 获取 TransactionDefinition 事务配置 以及 commit 或者 rollback

TransactionDefinition: 定义隔离级别 以及各种配置

TransactionStatus: 当前隔离状态


使用@EnableTransactionManagement可以启用事务管理 然后再各个需要事务的地方设置@Transaction即克出发事务

源码:

1,通过 EnableTransactionManagement 导入 TransactionManagementConfigurationSelector 选择器,ImportSelect 及使用 ConfigureClassParseListenre 导入
该配置中所有类的名字 然后向容器中注入 该bean

2,向容器中注入 ProxyTransactionManagementConfiguration 配置类

3,通过该配置向容器注入 TransactionInterceptor

    TransactionInterceptor 继承 MethodInterceptor 即使用 代理
    
    通过向 TransactionInterceptor 中配置 事务属性 以及 PlatfromTransactionManager 完成 事务拦截器生成
    
4, 事务属性配置 可以配置 拦截器 应该拦截什么样的执行方法 启用事务 
5,传入的 PlatfromTransactionManager 用于传入该设置什么样的 拦截器 以及隔离状态 以及 隔离级别

执行: 
  生成的事务拦截器代理,执行的时候  MethodInvocation 根据拦截器链 先执行 然后执行真正的事务
  
  1,创建 TransactionInfo(其中含有 PlatfromTransactionManager) 并将
  2,根据 PlatfromTransactionManager 生成一个 TransactionStatus 
  3, 生成 TransactionStatus 时 会 生成一个 connection 由 TransactionSynchronizationManager.getResource(getDataSource());
  4, 将 TransactionInfo 绑定到 当前线程
  5, 执行当前线程
  6,根据执行状况 来执行 commit 或者 rollback
  
  
通过 BeanFactoryTransactionAttributeSourceAdvisor 注入到 容器中 形成 拦截器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值