Spring 事物Transaction
日常开发中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的更多相关文章
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
- spring事物的传播行为
1.spring事物的传播行为,主要是用来解决业务层拥有事物的方法,相互调用的问题. 2.声明事物, 在代码执行前,开启事务.代码执行完,提交事务 3.spring并没有提供事务具体的处理,而只是调用 ...
- spring事物深入了解
1.问题 1.以前对事物的了解只是停留在声明式事物,配置xml,或使用注解,事物的传播行为也只用过REQUIRED和SUPPORTS,可以说对事物的了解很模糊. 2.直到在开发中遇到问题.. 问题的描 ...
- spring 事物的一些理解
推荐一个我认为Spring事物写得很好的文章. 文章链接:http://www.codeceo.com/article/spring-transactions.html 文章作者:码农网 – 吴极心 ...
- Spring 事物传播特性
Spring 事物传播特性 这是Spring官方的定义 一共有7种 摘自源码省略了一部分 public interface TransactionDefinition { int PROPAGATIO ...
- java陷阱之spring事物未提交和回滚导致不可预知问题
案发现场 //防止全局配置了 所以这里定义sprnig 不托管事物 @Transactional(propagation = Propagation.NOT_SUPPORTED) public boo ...
- SpringBoot事物Transaction实战讲解教程
前言 本篇文章主要介绍的是SpringBoot的事物Transaction使用的教程. SpringBoot Transaction 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码 ...
- Spring事物
简介 Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现. Spring事务管理器的接口是org ...
- Spring事务Transaction配置的五种注入方式详解
Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学 ...
随机推荐
- WPF DEV gridcontrol当前项的数据导出为mdb文件
/// <summary> /// 导出为mdb /// </summary> /// <param name="sender"></pa ...
- 使用JavaScript制作页面效果3
一. 1.下拉列表:select对象 属性: option[ ]:选项数组 selectedIndex:被选中选项的索引号 length:选项总数 方法: add(option对象,添加位置):增加选 ...
- Android 开发 重写定位器类Timer与TimerTask
class AttendanceTimer extends Timer { private static final int LOCATION = 0x01; private static final ...
- js自执行事件
let a = document.createElement("a");let event = new MouseEvent("click");a.downlo ...
- 如何才能成为一个合格的web前端工程师
转载原文地址:https://juejin.im/post/5cc1da82f265da036023b628 开篇前端开发是一个非常特殊的行业,它的历史实际上不是很长,但是知识之繁杂,技术迭代速度之快 ...
- airflow笔记
airflow webserver --debug & # debug 模式,在后台启动webserver airflow list_dags airflow list_tasks tuto ...
- 使用css设置三角形
1.在开发中,有时候会用到一些小三角形来强调或者标记元素,这样以便区分不同的项目,然后把三角形绘制成一个比较明显的颜色,就达到效果了,那怎么才能画出三角形呢,之前我也不清楚,最近看到了有些网页在使用, ...
- Visual Studio 2017 密匙
趁着这两天微软发布了Visual Studio 2017,安装体验了这个史上最强IDE最新版,分享一下自己的安装过程: VS2017下载地址,该版本堪称史上最大IDE,随便勾了几个选项,就要占用几十个 ...
- 使用IntelliJ IDEA 配置Maven
创建一个本地仓库路径 配置本地仓库路径 配置maven环境变量 配置maven环境变量 打开命令输入 : mvn version,配置成功如下图所示: 在IntelliJ IDEA中配置maven f ...
- 2017-11-11 Sa Oct 消参
2017-11-11 Sa Oct 消参 Prior versions: 2017-11-04 Sa Oct 消参 2017-11-10 Fr Oct 消参 2017-11-04 Sa $ P(-3, ...