Title

Spring事务实现原理

Spring事务实现原理

使用

@EnableTransactionManagement

原理:

1.解析切面——> bean后置处理器前置方法中进行解析advisor(pointCut通过@Transactional解析的切点,advise)(这个advisor是通过@EnableTransactionManagement注册一个配置类,改配置类配置了advisor)

2.创建动态代理——> bean后置处理器的后置方法中创建动态代理(有接口用jdk,没有则用cglib),创建动态代理之前会根据缓存advisor,当前bean匹配advisor中的pointCut,匹配到就创建动态代理。

3.调用:通过动态代理进行增强,通过调用链方式递归调用

try{

     4.创建一个数据库连接Connection存入Treadlocal,并修改autocommit属性为false,禁止此连接自动提交,这是实现事务非常重要一步,返回事务信息TransactionalInfo

     5.执行当前方法,方法中会操作sql语句

}catch{

     6.如果出现了异常,并且这个异常需要回滚的就回滚事务,否则仍然提交事务 

 }

   7.没有异常直接提交事务
posted @ 2022-06-27 12:39  手中的小黄鸭  阅读(183)  评论(0)    收藏  举报