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

  • 相关阅读:
    6,Django之视图层
    5,Django的路由层
    4,django系列django简介
    3,django系列web框架
    2,django系列之http协议
    1.django系列web应用
    各版本数据库的默认端口号
    vue v-for 渲染完成回调
    linux 下 The valid characters are defined in RFC 7230 and RFC 3986
    linux 下启动tomca慢问题
  • 原文地址:https://www.cnblogs.com/doyi111/p/12403961.html
Copyright © 2011-2022 走看看