zoukankan      html  css  js  c++  java
  • 38、[源码]-声明式事务-源码分析

    38、[源码]-声明式事务-源码分析

    原理

    1、@EnableTransactionManagement
    利用TransactionManagementConfigurationSelector给容器中会导入组件
    导入两个组件
    1. AutoProxyRegistrar
    2. ProxyTransactionManagementConfiguration
    2、AutoProxyRegistrar
    • 给容器中注册一个 InfrastructureAdvisorAutoProxyCreator 组件;
    • InfrastructureAdvisorAutoProxyCreator:?
    • 利用后置处理器机制在对象创建以后,包装对象,返回一个代理对象(增强器),代理对象执行方法利用拦截器链进行调用;
    3、ProxyTransactionManagementConfiguration 做了什么?
    给容器中注册事务增强器;
    1. 事务增强器要用事务注解的信息,AnnotationTransactionAttributeSource解析事务注解
    2. 事务拦截器:
      1. TransactionInterceptor;保存了事务属性信息,事务管理器;
      2. 他是一个 MethodInterceptor;
      3. 在目标方法执行的时候;执行拦截器链;事务拦截器:
        1. 先获取事务相关的属性
        2. 再获取PlatformTransactionManager,如果事先没有添加指定任何transactionmanger 最终会从容器中按照类型获取一个PlatformTransactionManager;
        3. 执行目标方法
          1. 如果异常,获取到事务管理器,利用事务管理回滚操作;
          2. 如果正常,利用事务管理器,提交事务
  • 相关阅读:
    oc 基本基础类型之NSString
    oc 内存管理
    自定义的init方法和重写的init方法
    property属性
    iOS 开发朗读文字
    获取当前最顶层的ViewController
    二维码扫描的简单封装
    OC百度导航类的封装
    OC上传图片的封装(配合AFNetWorkiing)
    集成百度地图报错41个解决方法(转)
  • 原文地址:https://www.cnblogs.com/Grand-Jon/p/10061460.html
Copyright © 2011-2022 走看看