• spring注解(3)


    /**
    * 声明式事务:
    *
    * 环境搭建:
    * 1、导入相关依赖
    *      数据源、数据库驱动、Spring-jdbc模块
    * 2、配置数据源、JdbcTemplate(Spring提供的简化数据库操作的工具)操作数据
    * 3、给方法上标注 @Transactional 表示当前方法是一个事务方法;
    * 4、 @EnableTransactionManagement 开启基于注解的事务管理功能;
    *    @EnableXXX
    * 5、配置事务管理器来控制事务;
    *    @Bean
    *    public PlatformTransactionManager transactionManager()

                     

                   

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

  • 相关阅读:
    nextcloud环境搭建及部署
    docker容器内访问宿主机,访问不通 错误:Host is unreachable
    记录一下SQL的行行比较
    记录一次nginx平滑升级
    letsencrypt免费SSL证书自动续期
    守护进程因echo挂掉的原因,以及重定向标准输入、标准输出和标准错误
    openresty lua-nginx-module模块中文文档
    nginx localhost的坑
    PHP7 MongoDb的操作类
    tomcat 性能检测
  • 原文地址:https://www.cnblogs.com/doyi111/p/12403961.html
Copyright © 2020-2023  润新知