spring 事务 @EnableTransactionManagement原理

@EnableXXX原理:注解上有个XXXRegistrar,或通过XXXSelector引入XXXRegistrar,XXXRegistrar实现了 
ImportBeanDefinitionRegistrar的registerBeanDefinitions方法,给容器注册XXXCreator。这个Creator实现了后置处理器, 
后置处理器在对象创建以后,包装对象,返回一个代理对象,代理对象执行方法利用拦截器链进行调用

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

原文地址:https://www.cnblogs.com/moxiaotao/p/9435764.html

时间: 2024-10-10 02:59:04

spring 事务 @EnableTransactionManagement原理的相关文章

Spring 事务管理原理探究

此处先粘贴出Spring事务需要的配置内容: 1.Spring事务管理器的配置文件: <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" />..... <

spring事务的原理

spring事务管理的本质是通过aop为目标类生成动态代理类,并在需要进行事务管理的方法中加入事务管理的横切逻辑代码 https://juejin.im/entry/5836572767f3560065f1939b

spring事务管理 TransactionProxyFactoryBean源码分析

J2EE,当然离不开事务,事务又当然少不了Spring声明式事务.spring声明式事务,很多码农门,应该和笔者一样,停留在使用上,及仅仅了解点原理.如:Spring事务管理原理"代理+AOP",再深入了解就不太清楚了.一直对声明式事务实现特别感兴趣,今天抽时间,剖析一下下. 1.准备 BeanFactory,及对象生成周期 AOP代理对象生成过程 1.1.BeanFactory 及生命周期 Factory class name 作用 ListableBeanFactory 枚举所有的

Spring事务的5种隔离级别和7种传播性

隔离级别 isolation,5 种: ISOLATION_DEFAULT,ISOLATION_READ_UNCOMMITTED,ISOLATION_READ_COMMITTED,ISOLATION_REPEATABLE_READ,ISOLATION_SERIALIZABLE, 隔离级别解决的问题: 脏读, 幻读, 不可重复读, 传播性 propagation,7 种: PROPAGATION_REQUIRED,PROPAGATION_SUPPORTS,PROPAGATION_MANDATORY

Spring事务源码分析总结

Spring事务是我们日常工作中经常使用的一项技术,Spring提供了编程.注解.aop切面三种方式供我们使用Spring事务,其中编程式事务因为对代码入侵较大所以不被推荐使用,注解和aop切面的方式可以基于需求自行选择,我们以注解的方式为例来分析Spring事务的原理和源码实现. //配置事务管理器<tx:annotation-driven transaction-manager="transactionManager"/> <bean id="trans

深入理解 Spring 事务原理

一.事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connection con = DriverManager.getConnection() 开启事务con.setAutoCommit(true/false); 执行CRUD 提交事务/回滚事务 con.commit() / con.rollback(); 关闭连接 conn.close(); 使

一文带你深入浅出Spring 事务原理

Spring事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connection con = DriverManager.getConnection() 开启事务con.setAutoCommit(true/false); 执行CRUD 提交事务/回滚事务 con.commit() / con.rollback(); 关闭连接 conn.close(

Spring事务管理实现原理及MySQL InnoBD引擎行锁概述

Spring实现事务管理的机制 Spring事务管理是基于AOP编程思想实现,Spring框架被广泛使用的原因之一,就是提供了强大的事务管理机制. AOP是什么?我们常说的AOP并不是指一种开发技术,而是一种编程思想,AOP的核心概念就是面向切面编程,实现可插拔,降低程序之前的耦合性,提高重用性. Spring AOP 基于动态代理实现,一种是JDK动态代理,另一种是CGLIB动态代理. spring2.5之前声明式事务可以这样实现: ?<!-- 声明使用的spring事务管理器--> <

Spring 事务相关点整理

Spring和事务的关系 关系型数据库.某些消息队列等产品或中间件称为事务性资源,因为它们本身支持事务,也能够处理事务. Spring很显然不是事务性资源,但是它可以管理事务性资源,所以Spring和事务之间是管理关系. 就像起码很多领导虽然不会写代码,但是他却管理着一大批会写代码的码农. Spring事务三要素 数据源:表示具体的事务性资源,是事务的真正处理者,如MySQL等. 事务管理器:像一个大管家,从整体上管理事务的处理过程,如打开.提交.回滚等. 事务应用和属性配置:像一个标识符,表明