日常开发中Spring 为我们提供了两种事物的定义方式

    XML 配置 方式 :这种方式配置起来比较麻烦,但后期比较好进行维护

    注解方式:配置起来比较方便,也是日常开发常用的;

我们这里进行第二种注解的形式的说明:如下是spring 注解开发的配置

    <!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref ="dataSource"/>
</bean> <!-- 使用注解方式定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />

接下来我们围绕着如下几个问题进行Spring 事物的展开:

1.<tx:annotation-driven transaction-manager="transactionManager" /> 进行了哪些操作
2.如何进行匹配哪些类需要增强并生成代理
3.事物的传播机制

第一个问题:  <tx:annotation-driven transaction-manager="transactionManager" /> 进行了哪些操作

  自定义标签解析:org.springframework.transaction.config.TxNamespaceHandler

  解析:

  注册相关配置类

 向事物拦截器中注册事物管理器的属性:

 至此,已经注册了 InfrastructureAdvisorAutoProxyCreator ,AnnotationTransactionAttributeSource,TransactionInterceptor ,BeanFactoryTransactionAttributeSourceAdvisor

 这四个类;这四个类的作用,我们后面就能看出来;

  第二个问题: 如何进行匹配哪些类需要增强并生成代理?

  这个问题,需要看我们在注册的时候注册的 InfrastructureAdvisorAutoProxyCreator 类 代理生成器了,我们看它的类结构 有实现 BeanPostProcessor 接口

  这个接口的作用以及调用实际,请看我上一篇文章;

  我们直奔主题看  warpIfNecessary(..)方法

    点击进去:

  往下面点,会进入canApply 方法:

   getTransactionAttributeSource() 就是得到我们第一步装配的AnnotationTransactionAttributeSource 是用来获取事物配置的;

    接下来就是真正的校验方法了:

    解析方法上的注解,类上也一样

    发现注解,解析注解属性

Spring 事物Transaction的更多相关文章

  1. MyBatis6:MyBatis集成Spring事物管理(下篇)

    前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...

  2. spring事物的传播行为

    1.spring事物的传播行为,主要是用来解决业务层拥有事物的方法,相互调用的问题. 2.声明事物, 在代码执行前,开启事务.代码执行完,提交事务 3.spring并没有提供事务具体的处理,而只是调用 ...

  3. spring事物深入了解

    1.问题 1.以前对事物的了解只是停留在声明式事物,配置xml,或使用注解,事物的传播行为也只用过REQUIRED和SUPPORTS,可以说对事物的了解很模糊. 2.直到在开发中遇到问题.. 问题的描 ...

  4. spring 事物的一些理解

    推荐一个我认为Spring事物写得很好的文章. 文章链接:http://www.codeceo.com/article/spring-transactions.html  文章作者:码农网 – 吴极心 ...

  5. Spring 事物传播特性

    Spring 事物传播特性 这是Spring官方的定义 一共有7种 摘自源码省略了一部分 public interface TransactionDefinition { int PROPAGATIO ...

  6. java陷阱之spring事物未提交和回滚导致不可预知问题

    案发现场 //防止全局配置了 所以这里定义sprnig 不托管事物 @Transactional(propagation = Propagation.NOT_SUPPORTED) public boo ...

  7. SpringBoot事物Transaction实战讲解教程

    前言 本篇文章主要介绍的是SpringBoot的事物Transaction使用的教程. SpringBoot Transaction 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码 ...

  8. Spring事物

    简介 Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现. Spring事务管理器的接口是org ...

  9. Spring事务Transaction配置的五种注入方式详解

    Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学 ...

随机推荐

  1. winform datagridview 导出excel

    using System;using System.Collections.Generic;using System.Text;using System.IO;using Microsoft.Offi ...

  2. 如何避免在IE内核时,按BackSpace时进行网页会进行回退

    //解决在IE浏览器中input被设置成readonly时,点击Backspace时会出现网页回退 document.onkeydown = check; function check(e) { va ...

  3. nfs与dhcp服务

    NFS服务端概述 NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录 ...

  4. tomcat安装启动之后localhost:8080页面进不去,提示错误500

    具体的错误展示页面如下: 首先,需要考虑到是不是安装的tomcat版本和自己安装的jdk的版本一致,如果不一致,建议将tomcat换成和jdk一致或者高于jdk版本的tomcat版本.(比如安装的jd ...

  5. Linux进阶指令(重点)

    三.Linux进阶指令(重点) 1.df指令    作用:查看磁盘的空间 #df -h 选项:-h    表示以可读性较高的形式展示大小 2.free指令     作用:查看内存使用情况 #free ...

  6. Exp6 信息搜集与漏洞扫描 20164313 杜桂鑫

    1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 1.使用搜索引擎 在百度搜索栏内输入 site:com filetype:doc 北京电子科技学院 ...

  7. 六、Python-字符串编码

      最早的编码为ASCII码(包含0-9.A-Z.a-z.符号(空格.制表符等)),最多支持256个符号(每个符号占1字节) GBK/GB2312:我国制定的中文编码标准,一个字节表示因为字母,两个字 ...

  8. 李清华 201772020113《面向对象程序设计(java)》第十四周学习总结

    1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和步骤 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程 ...

  9. redis的使用与 django的redis的使用

    1. 使用redis数据库分为两种: 第一种是在python语言中直接使用的方式, 第二种就是在django中使用django_redis模块来数用 第一种直接在python语言中使用redis im ...

  10. Android Studio上传代码到Coding.net

    1.官方帮助文档:https://coding.net/help/doc/git/import-from-local.html 2.简单点: https://git.coding.net/javaka ...