谈Spring的事务管理

开篇前 
Spring发展至今已到v5,本篇旨在探究Spring对于事务管理的方式的发展变化,算是对许久以来使用的总结,同时也希望和想深入Spring事务管理的小伙伴们做一个分享。 
开篇 
Spring作为一个“非侵入式”的容器,在事务管理方面也一直朝着这方面努力。本篇将从其声明性事务的实施,事务支持等方面说开。 
Spring声明性事务的实施  
Spring是2003年由Rod Johnson发起的一个框架,在其早期的版本中,对于声明性事务的实施是由TransactionProxyFactoryBean代理类实现的。翻开其源码可以看出since 2003,好久远啊。 

先看一个基于TransactionProxyFactoryBean的典型的配置,

谈Spring的事务管理_第1张图片

实际上,TransactionProxyFactoryBean是一个代理类,通过对业务类的代理实施事务增强。那TransactionProxyFactoryBean是怎么代理的呢? 
这要从动态代理说起,Spring AOP在运行期间通过动态代理实现代码的增强。这有点像现在的“涡轮增压”发动机,在发动机运行期间会更有动力。通常,TransactionProxyFactoryBean在底层是通过JDK动态代理实现事务增强的,当然也可以配置成CGLIB动态代理。具体使用它时可以配置事务的传播行为、隔离级别、异常回滚等事务属性信息,这里就不详述了。(好长的事务属性信息~容易写错) 
这种代理类实现事务支持的方式在Spring早期广泛使用,通过上面的配置看出其配置的复杂,复杂性表现在被代理类的方法的描述、事务属性的配置等方面。Schema



to be continued!

你可能感兴趣的:(Spring,Java)