• 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)、执行目标方法
    *                 如果异常,获取到事务管理器,利用事务管理回滚操作;
    *                         如果正常,利用事务管理器,提交事务
    *
    */   

  • 相关阅读:
    Postman安装出错.NET Framework 4.5 failed to install
    给小白的资源
    windows update自启动解决方法
    Fragment简介及使用
    samba修复
    我的Android知识结构图——20200507停止更新,后续通过标签或分类继续完善结构图
    Android_适配器(adapter)之BaseAdapter
    Android_适配器(adapter)之SimpleAdapter
    Android_适配器(adapter)之ArrayAdapter
    Linux部分场景非常有用的命令集1_chattr&ldd&xargs&screen&ssh&磁盘&du
  • 原文地址:https://www.cnblogs.com/doyi111/p/12403961.html
Copyright © 2020-2023  润新知