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)、执行目标方法
    *                       如果异常,获取到事务管理器,利用事务管理回滚操作;
    *                       如果正常,利用事务管理器,提交事务
  • 相关阅读:
    挑战练习13.8 用于RecyclerView 的空视图
    挑战练习13.7 复数字符串资源
    挑战练习13.6 删除crime 记录
    挑战练习12.3 更多对话框
    20. Valid Parentheses
    挑战练习11.6 添加Jump to First按钮和Jump to Last按钮
    内存 分析
    HOOK64 32转换
    MD5
    HOOk快捷键
  • 原文地址:https://www.cnblogs.com/moxiaotao/p/9435764.html
Copyright © 2011-2022 走看看