首页 > 编程语言 > 详细

spring 事务 @EnableTransactionManagement原理

时间:2018-08-07 12:28:36      阅读:325      评论:0      收藏:0      [点我收藏+]

@EnableXXX原理:注解上有个XXXRegistrar,或通过XXXSelector引入XXXRegistrar,XXXRegistrar实现了 
ImportBeanDefinitionRegistrar的registerBeanDefinitions方法,给容器注册XXXCreator。这个Creator实现了后置处理器, 
后置处理器在对象创建以后,包装对象,返回一个代理对象,代理对象执行方法利用拦截器链进行调用

* 1)、@EnableTransactionManagement
*        利用TransactionManagementConfigurationSelector给容器中会导入组件
*        导入两个组件
*        AutoProxyRegistrar
*        ProxyTransactionManagementConfiguration
* 2)、AutoProxyRegistrar:
*        给容器中注册一个 InfrastructureAdvisorAutoProxyCreator 组件;
*        利用后置处理器机制在对象创建以后,包装对象,返回一个代理对象(增强器),代理对象执行方法利用拦截器链进行调用;
* 3)、ProxyTransactionManagementConfiguration是个@Configuration
*        1、给容器中注册事务增强器transactionAdvisor;
*           1)、事务增强器要用事务注解的信息,AnnotationTransactionAttributeSource解析事务注解
*           2)、事务拦截器transactionInterceptor:
*              TransactionInterceptor;保存了事务属性信息,事务管理器;
*              TransactionInterceptor是一个 MethodInterceptor;
*              在目标方法执行的时候;
*                 执行拦截器链;
*                 只有事务拦截器:
*                    1)、先获取事务相关的属性
*                    2)、再获取PlatformTransactionManager,如果事先没有添加指定任何transactionmanger
*                       最终会从容器中按照类型获取一个PlatformTransactionManager;
*                    3)、执行目标方法
*                       如果异常,获取到事务管理器,利用事务管理回滚操作;
*                       如果正常,利用事务管理器,提交事务

spring 事务 @EnableTransactionManagement原理

原文:https://www.cnblogs.com/moxiaotao/p/9435764.html

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