zoukankan      html  css  js  c++  java
  • spring 事务 @EnableTransactionManagement原理

    @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)、执行目标方法
    *                       如果异常,获取到事务管理器,利用事务管理回滚操作;
    *                       如果正常,利用事务管理器,提交事务
  • 相关阅读:
    【NIPS 2018】完整论文下载链接
    【今日CV 视觉论文速览】30 Nov 2018
    【超好玩的在线AI项目】浏览器里玩AI------持续更新
    hdu 4035 Maze 概率DP
    hdu 4089 Activation 概率DP
    hdu 4405 Aeroplane chess 概率DP
    zoj 3329 One Person Game 概率DP
    poj 2096 Collecting Bugs 概率DP
    poj 3744 Scout YYF I
    2013 Multi-University Training Contest 5 Partition
  • 原文地址:https://www.cnblogs.com/moxiaotao/p/9435764.html
Copyright © 2011-2022 走看看