首页 > 编程语言 > 详细

spring学习总结016 --- spring事务原理

时间:2020-07-22 01:10:40      阅读:97      评论:0      收藏:0      [点我收藏+]

前面介绍了事务的使用方法,开启事务可以通过@EnableTransactionManagement或者<tx:annotation-driven />,前面说过spring的事务实现是基于AOP实现的,下面分析下spring事务的实现原理

@EnableTransactionManagement

技术分享图片

和AOP类似,开启事务注解使用了bean导入注解@Import,通过ImportSelector方式导入bean;实现类为TransactionManagementConfigurationSelector

在代理模式mode=AdviceMode.PROXY时,指定通过AutoProxyRegistrar和ProxyTransactionManagementConfiguration方式导入bean

技术分享图片

AutoProxyRegistrar

该类为ImportBeanDefinitionRegistrar接口的实现类,用于动态注册bean定义,跟踪源码,找到其动态注册了InfrastructureAdvisorAutoProxyCreator类型的bean

InfrastructureAdvisorAutoProxyCreator为bean后置处理器,在postProcessAfterInitialization方法中创建代理对象

技术分享图片

技术分享图片

ProxyTransactionManagementConfiguration

该类为spring配置类,主要注册了如下三种bean定义:

技术分享图片

1、AnnotationTransactionAttributeSource

用于扫描使用@Transactional注解的方法,并读取事务配置getTransactionAttribute方法,如事务传播行为、隔离级别等

技术分享图片

2、TransactionInterceptor

spring事务中很重要的类,提供了事务执行的方式, invoke方法;并且注入了事务管理器属性;

技术分享图片

3、BeanFactoryTransactionAttributeSourceAdvisor

Advisor实现类,遵从Advisor规范,在代理调用时,调用该类的增强方法getAdvice;该类注入了TransactionInterceptor,因此会先使用TransactionInterceptor进行增强;

XML配置方式事务原理

前面的AOP和事务都是以注解的方式进行说明的,这里说明下XML方式的原理;

spring中解析XML定义都是通过NameSpaceHandler来解析的,spring事务通过TxNameSpaceHandler来解析

技术分享图片

技术分享图片

 

spring学习总结016 --- spring事务原理

原文:https://www.cnblogs.com/sniffs/p/13357722.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!