boot2源码-事务
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源码-事务相关推荐
- Spring源码 (事务篇) - 整体流程
1.解析配置文件 1.1 .解析配置文件的阶段 处理配置文件是在 refresh => invokeBeanFactoryPostProcessors ,即在调用 BeanFactory后置处理 ...
- spring5源码-事务
Spring的事务机制包括声明式事务和编程式事务. 编程式事务管理:Spring推荐使用TransactionTemplate,实际开发中使用声明式事务较多. 声明式事务管理:将我们从复杂的事务处理中 ...
- Spring事务源码分析责任链事务链事务不生效
文章目录 前言 带着问题分析源码 事务源码分析 寻找Spring事务源码类 TransactionInterceptor调用栈 分析Spring AOP责任链 分析TransactionInterce ...
- Spring源码——声明式事务流程
前言 最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图.图片等文件更新在https://github.com/MrSorrow/spring-frame ...
- spring的事务隔离_再深一点:面试工作两不误,源码级理解Spring事务
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. Spring有5种隔离级别,7种传播行为.这是面试常问的内容,也是代码中经常碰到的知识点.这些知识枯燥而且乏味,其中有些非 ...
- 分布式事务中间件 Fescar—RM 模块源码解读
2019独角兽企业重金招聘Python工程师标准>>> 前言 在SOA.微服务架构流行的年代,许多复杂业务上需要支持多资源占用场景,而在分布式系统中因为某个资源不足而导致其它资源占用 ...
- mybatis源码分析之事务管理器
2019独角兽企业重金招聘Python工程师标准>>> 上一篇:mybatis源码分析之Configuration 主要分析了构建SqlSessionFactory的过程中配置文件的 ...
- 【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)
Starting from a joke 问:把大象放冰箱里,分几步? 答:三步啊,第一.把冰箱门打开,第二.把大象放进去,第三.把冰箱门带上. 问:实现Spring事务,分几步? 答:三步啊,第一. ...
- springboot事务回滚源码_Spring Boot中的事务是如何实现的
1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...
最新文章
- 找java培训机构有哪些参考标准
- vue-cli中引入jquery方法
- 【转载】分布式事务 介绍
- Python 之父再度发声:我们能为中国的“996”程序员做什么?
- 基于注意力机制的seq2seq网络
- 邀请和建议的回答_46
- spring配置事务
- HCIP/HCIE RoutingSwitching / Datacom备考宝典系列(九)STP知识点全面总结(生成树协议)
- php后台登录页,后台登录页面模板源码
- 机器视觉系统——照明
- 微信PC端或将支持自动登录?网友直呼好家伙
- Http之referer详解
- 解决backtrack5连接不上ssh问题
- 蓝汛之获取DAC输出能量【篇】
- DEDECMS网站搬家到服务器上后台登陆验证码不显示问题
- [第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇]Android 应用程序定制方案(生活类)...
- Python 的内建函数
- 无人驾驶视觉-单目视觉里程计
- 【QT】QT Qtimer定时的使用 含屏保功能实现,鼠标无操作后处理事件
- AD9850的FPGA实现--理论部分