jdbc事务

public void test(){String url = "jdbc:mysql://localhost:3306/test";String username = "root";String password = "root";String sql = "update blog set name = ? where id=?";Connection connection = null;try {connection = DriverManager.getConnection(url, username, password);// 1.关闭自动提交,开启事务connection.setAutoCommit(false);PreparedStatement prepareStatement = connection.prepareStatement(sql);prepareStatement.setString(1, "lucy");prepareStatement.setInt(2, 1);prepareStatement.executeUpdate();// 2.SQL正常执行,提交事务connection.commit();} catch (SQLException e) {try {// 3.执行出现错误,回滚事务connection.rollback();} catch (SQLException e1) {e1.printStackTrace();}}
}

spring事务就是封装这个,

转载大神,spring-xml事务
https://blog.csdn.net/qq_26323323/article/details/81948682
https://blog.csdn.net/qq_26323323/article/details/82017060

boot源码

spring.factories中很多自动配置类,自动配置很多bean
TransactionAutoConfiguration入口配置类

两个bean都配置了EnableTransactionManagement注解

导入了TransactionManagementConfigurationSelector类

debug查看,选择的是PROXY。
导入了两个类AutoProxyRegistrar,ProxyTransactionManagementConfiguration

ProxyTransactionManagementConfiguration配置了3个bean
核心处理类TransactionInterceptor,处理方法

父类TransactionAspectSupport,最核心三步,第一个开启事务,下面是回滚事务,提交事务。else是编程式事务。

第一步,开启事务
TransactionAspectSupport

AbstractPlatformTransactionManager

这里处理传播级别,handleExistingTransaction处理有事务时,但是传播级别要求没有事务时,抛异常或者挂起事务。
// No existing transaction found -> check propagation behavior to find out how to proceed.
注释下面处理,没有事务,但是传播级别要求有事务,创建事务,挂起旧事务。

DataSourceTransactionManager

第二步,回滚事务
TransactionAspectSupport,调用事务管理器的回滚方法

第三步,提交事务
TransactionAspectSupport,调用事务管理器的提交方法

boot2源码-事务相关推荐

  1. Spring源码 (事务篇) - 整体流程

    1.解析配置文件 1.1 .解析配置文件的阶段 处理配置文件是在 refresh => invokeBeanFactoryPostProcessors ,即在调用 BeanFactory后置处理 ...

  2. spring5源码-事务

    Spring的事务机制包括声明式事务和编程式事务. 编程式事务管理:Spring推荐使用TransactionTemplate,实际开发中使用声明式事务较多. 声明式事务管理:将我们从复杂的事务处理中 ...

  3. Spring事务源码分析责任链事务链事务不生效

    文章目录 前言 带着问题分析源码 事务源码分析 寻找Spring事务源码类 TransactionInterceptor调用栈 分析Spring AOP责任链 分析TransactionInterce ...

  4. Spring源码——声明式事务流程

    前言 最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图.图片等文件更新在https://github.com/MrSorrow/spring-frame ...

  5. spring的事务隔离_再深一点:面试工作两不误,源码级理解Spring事务

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. Spring有5种隔离级别,7种传播行为.这是面试常问的内容,也是代码中经常碰到的知识点.这些知识枯燥而且乏味,其中有些非 ...

  6. 分布式事务中间件 Fescar—RM 模块源码解读

    2019独角兽企业重金招聘Python工程师标准>>> 前言 在SOA.微服务架构流行的年代,许多复杂业务上需要支持多资源占用场景,而在分布式系统中因为某个资源不足而导致其它资源占用 ...

  7. mybatis源码分析之事务管理器

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇:mybatis源码分析之Configuration 主要分析了构建SqlSessionFactory的过程中配置文件的 ...

  8. 【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)

    Starting from a joke 问:把大象放冰箱里,分几步? 答:三步啊,第一.把冰箱门打开,第二.把大象放进去,第三.把冰箱门带上. 问:实现Spring事务,分几步? 答:三步啊,第一. ...

  9. springboot事务回滚源码_Spring Boot中的事务是如何实现的

    1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...

最新文章

  1. 找java培训机构有哪些参考标准
  2. vue-cli中引入jquery方法
  3. 【转载】分布式事务 介绍
  4. Python 之父再度发声:我们能为中国的“996”程序员做什么?
  5. 基于注意力机制的seq2seq网络
  6. 邀请和建议的回答_46
  7. spring配置事务
  8. HCIP/HCIE RoutingSwitching / Datacom备考宝典系列(九)STP知识点全面总结(生成树协议)
  9. php后台登录页,后台登录页面模板源码
  10. 机器视觉系统——照明
  11. 微信PC端或将支持自动登录?网友直呼好家伙
  12. Http之referer详解
  13. 解决backtrack5连接不上ssh问题
  14. 蓝汛之获取DAC输出能量【篇】
  15. DEDECMS网站搬家到服务器上后台登陆验证码不显示问题
  16. [第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇]Android 应用程序定制方案(生活类)...
  17. Python 的内建函数
  18. 无人驾驶视觉-单目视觉里程计
  19. 【QT】QT Qtimer定时的使用 含屏保功能实现,鼠标无操作后处理事件
  20. AD9850的FPGA实现--理论部分

热门文章

  1. js中短路运算符 ||
  2. STL六大组件 功能与运用(略写)
  3. 滴滴为什么接不到长途单?
  4. pin码是什么意思?
  5. 定损是保险公司定还是4s店定的?
  6. 如何保持婚姻的新鲜感?
  7. 二月春风似剪刀的上一句是什么,二月春风似剪刀全诗赏析
  8. 过去几年的互联网经济,首先是“免费经济”
  9. 很多创业失败的负债者
  10. 为什么200M宽带还是会很慢?