Spring事务执行流程

根据图中的信息 学习一下Spring的事务管理流程:

1、 事务配置信息主要是通过拦截器和Spring AOP发生作用的,具体流程如图中所示:
监听器TransactionAttributeSourceAdvisor通过正则匹配,将事务方法的属性配置以Properties的形式读入到TransactionAttributeSource中,然后TransactionAttributeSource又通过setTransactionAttribute()方法将事务封装成TransactionAttribute对象并将事务方法和对应的对象信息存储到nameMap中。

2、监听器TransactionAttributeSourceAdvisor中依赖一个拦截器TransactionInterceptor,这个拦截器管理事务的具体操作:

TransactionInterceptor通过invoke方法读取执行方法的事务信息,并读取TransactionManager事务管理类配置进行事务处理,

加入读取的TransactionManager事务管理类为DataSourceTransactionManager,他根据配置的数据源信息DataSource连接数据源,并根据事务的配置信息进行事务的创建、挂起、提交和回滚。同时生成对象TransactionStatus进行保存事务处理的基本信息。


TransactionStatus和拎一个事物对象TransactionInfo共同作用,决定底层事务的具体实现,TransactionInfo中封装了处理事务的配置信息及TransactionStatus对象,并通过ThreadLocal技术和当前线程进行绑定:创建新事务时,如果当前线程中有事务--1、如果事务的传播属性为never,那么会抛出异常;2、如果传播属性为Propagation_not_support,则将事务挂起;3、传播属性为Propagation_requires_new,创建新事务,同事将线程中存在的事务挂起。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值