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. 2.3T NPU强势登场!NXP i.MX 8M Plus开启工业新篇章,14纳米!

                    更多产品详情以及购买咨询 可添加如下客服人员微信 (即刻添加,马上咨询) 更多i.MX 8M Plus产品资料 可长按二维码识别下载 如需选购,请登录创龙科技天猫旗舰店 ...

  2. AM62x GPMC并口如何实现“小数据-低时延,大数据-高带宽”—ARM+FPGA低成本通信方案

    GPMC并口简介 GPMC(General Purpose Memory Controller)是TI处理器特有的通用存储器控制器接口,支持8/16bit数据位宽,支持128MB访问空间,最高时钟速率 ...

  3. JavaScript -- 数据类型 --手稿

  4. JavaScript -- 变量 --手稿

  5. [oeasy]python0054_三引号_原样显示字符串_triple_quoted

    三引号 回忆上次内容 \ 首先是转义字符 可以 和别的字符 构成转义序列 \a是 ␇ (bell), \b 退回一格 \t 水平制表符 \v.\f LineFeed \\ 输出 \ \" 输 ...

  6. SQL Server调用OLE对象

    T-SQL 中是可以调用 OLE 的,将这一功能应用到触发器.存储过程等对象中,SQL Server 运用变得更贴近我们的功能,更加满足我们的需要. T-SQL 中有七个存储过程是围绕本节内容进行的, ...

  7. 解决: Cannot load information for github.com

    问题在共享项目至idea时候出现:I am getting this error while sharing on GithHub in Intellije IDEA : Cannot load in ...

  8. golang 学习笔记1

    1.go的gin框架,没有预设目录,具体目录可以在网上参考.

  9. 安全可信,Solon v2.8.6 发布

    Solon 框架! Java "纯血国产"应用开发框架.开放原子开源基金会,孵化项目.从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态. 追求: 更快.更小.更 ...

  10. Linux 有趣命令

    代码雨 1.上传软件包 Linux 获取 wget https://jaist.dl.sourceforge.net/project/cmatrix/cmatrix/1.2a/cmatrix-1.2a ...