spring事务一次完整流程,创建 》确认获取连接 》完成 》提交》释放链接

DataSourceTransactionManager

//Step1. 进入业务方法前,依据事物切面创建事务对象

2019-07-06 22:34:24,819 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Creating new transaction with name [com.sample.service.CompanyServiceImpl.addCompany]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT

//Step2. 获取数据库连接,这里是配置了从c3p0连接池中获取

2019-07-06 22:34:25,292 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Acquired Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@97e93f1 [wrapping: com.mysql.jdbc.JDBC4Connection@5a5a729f]] for JDBC transaction
2019-07-06 22:34:25,292 [C3P0PooledConnectionPoolManager[identityToken->1hge138a31jetm9i12oidyb|383bfa16]-HelperThread-#1] TRACE c.m.v.resourcepool.BasicResourcePool - trace com.mchange.v2.resourcepool.BasicResourcePool@491b9b8 [managed: 2, unused: 1, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@6e3a9bce)
2019-07-06 22:34:25,292 [C3P0PooledConnectionPoolManager[identityToken->1hge138a31jetm9i12oidyb|383bfa16]-HelperThread-#1] TRACE c.m.v.resourcepool.BasicResourcePool - decremented pending_acquires: 1
2019-07-06 22:34:25,292 [C3P0PooledConnectionPoolManager[identityToken->1hge138a31jetm9i12oidyb|383bfa16]-HelperThread-#1] TRACE c.m.v.resourcepool.BasicResourcePool - Acquisition series terminated successfully. Decremented pending_acquires [1], attempts_remaining: 30

//这里是因为我们设置了手动提交事务,,之后就会之行具体业务方法
2019-07-06 22:34:25,294 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Switching JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@97e93f1 [wrapping: com.mysql.jdbc.JDBC4Connection@5a5a729f]] to manual commit

//Step3. 完成事务,jdbc commit;之后触发各种监听事件,时序为 beforeCommit --> beforeCompletion --> afterCommit -->afterCompletion

2019-07-06 22:34:25,320 [main] TRACE o.s.t.i.TransactionInterceptor - Completing transaction for [com.sample.service.CompanyServiceImpl.addCompany]
2019-07-06 22:34:25,320 [main] TRACE o.s.j.d.DataSourceTransactionManager - Triggering beforeCommit synchronization
2019-07-06 22:34:25,320 [main] TRACE o.s.j.d.DataSourceTransactionManager - Triggering beforeCompletion synchronization
2019-07-06 22:34:25,320 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Initiating transaction commit
2019-07-06 22:34:25,320 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Committing JDBC transaction on Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@97e93f1 [wrapping: com.mysql.jdbc.JDBC4Connection@5a5a729f]]
2019-07-06 22:34:25,366 [main] TRACE o.s.j.d.DataSourceTransactionManager - Triggering afterCommit synchronization

2019-07-06 22:34:25,366 [main] TRACE o.s.t.s.TransactionSynchronizationManager - Clearing transaction synchronization
2019-07-06 22:34:25,367 [main] TRACE o.s.j.d.DataSourceTransactionManager - Triggering afterCompletion synchronization

//Step4. 释放连接,归还连接到连接池
2019-07-06 22:34:25,367 [main] TRACE o.s.t.s.TransactionSynchronizationManager - Removed value [org.springframework.jdbc.datasource.ConnectionHolder@5340477f] for key [com.mchange.v2.c3p0.ComboPooledDataSource[ identityToken -> 1hge138a31jetm9i12oidyb|383bfa16, dataSourceName -> 1hge138a31jetm9i12oidyb|383bfa16 ]] from thread [main]
2019-07-06 22:34:25,368 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Releasing JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@97e93f1 [wrapping: com.mysql.jdbc.JDBC4Connection@5a5a729f]] after transaction

从日志记一次Spring事务完整流程的更多相关文章

  1. 记一次 Spring 事务配置踩坑记

    记一次 Spring 事务配置踩坑记 问题描述:(SpringBoot + MyBatisPlus) 业务逻辑伪代码如下.理论上,插入数据 t1 后,xxService.getXxx() 方法的查询条 ...

  2. 关于spring 事务 和 AOP 管理事务和打印日志问题

    关于spring 事务 和 AOP 管理事务和打印日志问题 1. 就是支持事务注解的(@Transactional) . ​ 可以在server层总使用@Transactional,进行方法内的事务管 ...

  3. Spring事务传播机制

    Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务 ...

  4. Spring事务异常回滚,捕获异常不抛出就不会回滚(转载) 解决了我一年前的问题

    最近遇到了事务不回滚的情况,我还考虑说JPA的事务有bug? 我想多了.......    为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志.但是这边情况来了,当这个方法异常 ...

  5. Spring事务源码阅读笔记

    1. 背景 本文主要介绍Spring声明式事务的实现原理及源码.对一些工作中的案例与事务源码中的参数进行总结. 2. 基本概念 2.1 基本名词解释 名词 概念 PlatformTransaction ...

  6. Spring(二十二):Spring 事务

    事务简介: 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性. 事务就是一系列的动作,它们被当做一个单独的工作单元.这些动作要么全部完成,要么全部不起作用. 事务的是四个关键 ...

  7. Spring事务原理分析--手写Spring事务

    一.基本概念和原理 1.Spring事务 基于AOP环绕通知和异常通知的 2.Spring事务分为编程式事务.声明事务.编程事务包括注解方式和扫包方式(xml) Spring事务底层使用编程事务(自己 ...

  8. Spring事务专题(三)事务的基本概念,Mysql事务处理原理

    前言 本专题大纲: 我重新整理了大纲,思考了很久,决定单独将MySQL的事务实现原理跟Spring中的事务示例分为两篇文章,因为二者毕竟没有什么实际关系,实际上如果你对MySQL的事务原理不感兴趣也可 ...

  9. 面试突击87:说一下 Spring 事务传播机制?

    Spring 事务传播机制是指,包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的. 既然是"事务传播",所以事务的数量应该在两个或两个以上,Spring 事务传播机制的 ...

  10. 一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 31.线程池复用的原理 32.spring是什么? 33.对Aop的理解 34.对IOC的理解 35.BeanFactor ...

随机推荐

  1. HiAI Foundation开发平台,加速端侧AI应用的智能革命

    如果您是一名开发者,正在寻找一种高效.灵活且易于使用的端侧AI开发框架,那么HarmonyOS SDKHiAI Foundation服务(HiAI Foundation Kit)就是您的理想选择. 作 ...

  2. ubuntu22 装物理机

    前言 最近需要使用u盘装一个ubuntu物理机,原本想试试麒麟,但还需要申请.. 自己捣鼓半天,终于把ubuntu系统装上了,现在记录一下过程. 正文 下载镜像文件 从官网下载 ubuntu22 的镜 ...

  3. Docker 总体架构图解

    Docker 的总体架构 Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职. 下图是它的总体架构图: 1. 用户使用 Docker Client 与 Docker Daem ...

  4. Servlet之Request和Response的快速上手

    阅读提示: 前置内容 MyBatis知识点总结 HTTP和Servlet入门 目录 1.Request和Response概述 2.Request对象 2.1 Request继承体系 2.2 Reque ...

  5. pyspark集成访问hive数据踩坑记录

    当前环境anaconda3.python3.9.13.jupyter 需要安装的pyspark.py4j pyspark和py4j的离线安装包地址Links for pyspark (tsinghua ...

  6. [oeasy]python0133_变量名_标识符_identifier_id_locals

    变量名 回忆上次内容 上次讲了 什么是变量 变量变量 能变的量 就是变量   各种系统.游戏就是由变量所组成的 ​   添加图片注释,不超过 140 字(可选)   声明了变量 并且 定义了变量   ...

  7. JavaScript小技巧~将伪数组转成数组的方法

    伪数组:具有数组结构但是五数组相关方法的类数组结构: 方式1:Array.from() 方式2:Array.prototype.slice.call(); 用方式1吧,好记简单

  8. Javascript 转Date对象为字符串实现函数

    转Date对象为字符串实现函数 function formatDate(time, format = "Y-MM-dd HH:mm:ss") { /** 格式化字符说明 Y 年 四 ...

  9. 第十二节 JMeter基础-中级地址信息【IF控制器】

    声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:提交订单前,我们需要核对一些信息,比如商品信息,收货地址,支付方式等.现在核对一下收货地址信息. 思路: 1.前提条件 ...

  10. 整段 html实现其中的每一个 a 标签跨域下载操作 window.URL.createObjectURL(blob)

    window.URL.createObjectURL(blob) a 标签下载问题,通常在 a 标签中加上download属性,就可完成对href属性链接文件的下载,但仅仅是限于同源文件,如果是非同源 ...