Spring的事务管理实现原理初探
来源:互联网 发布:excel中的编程 编辑:程序博客网 时间:2024/06/02 06:44
这里主要是通过分析部分源码进行剖析Spring事务管理的实现原理。
再分析源码前,现从理论上大概分析哈:
纯JDBC操作数据库的基本步骤:
1. 获取连接 Connection conn = DriverManager.getConnection()
2. 开启事务conn.setAutoCommit(true/false);
3. 执行CRUD
4. 提交事务/回滚事务 conn.commit() / conn.rollback();
5. 关闭连接 conn.close();
使用Spring的事务管理功能后,我们可以不再写步骤 2 和 3 的代码,而是由Spirng 自动完成。
那么Spring是如何在我们书写的 CRUD 之前和之后开启事务和关闭事务的呢?解决这个问题,也就可以从整体上理解Spring的事务管理实现原理了。
学过Java代理的就可能立马知道是怎么回事了,所以这里就不再赘述Java代理知识了。
这里具体集合Spring进行分析哈:
1. 在applicationContext.xml文件中开启Spring的事务功能:
- <tx:annotation-driven transaction-manager="myTxManager" />
配置上面的信息后,Spring在初始化包含Transactional注解的类时,会自动生成这些类的代理,并放置再容器中,以便备用。如:
总结:Spring的事务管理的内部实现是利用了代理技术。(这句话不知道是不是多余, -_- 欢迎吐嘈,拍砖哈)
- @Transactional
- @Service
- public class ProductTypeServiceImpl extends AbstractDao implements ProductTypeService {
- public ProductTypeServiceImpl () {
- System.out.println("***************************************************");
- System.out.println("class ProductTypeServiceImpl initialized");
- System.out.println("***************************************************");
- }
- }
Spring生成的代理类,如图:
开启事务:
提交事务:
在applicationContext.xml文件中,没有配置 <tx:annotation-driven>标签时,截图如下:
http://blog.csdn.net/wilsonpeng3/article/details/18464699
- Spring的事务管理实现原理初探
- Spring的事务管理实现原理初探
- Spring的事务管理实现原理初探
- spring事务管理的AOP实现原理
- Spring事务管理机制的实现原理
- spring的事务管理实现
- spring事务管理的实现
- Spring事务管理机制的实现原理-动态代理
- Spring事务管理机制的实现原理-动态代理
- Spring事务管理机制的实现原理-动态代理
- Spring事务管理机制的实现原理-动态代理
- Spring事务管理(1)-初探
- Spring事务管理原理
- Spring 事务管理原理探究
- spring事务管理原理
- Spring事务管理原理
- Spring事务管理原理
- spring 事务管理 原理
- 【Leetcode】Word Search
- python %s and %r and %d 区别
- Android隐藏应用图标,简单到哭
- 一、VS2015update2环境下DirectX11编程说明(2016.5.5更新)
- JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据
- Spring的事务管理实现原理初探
- TinyXML说明
- mysql timeout调研与实测
- DevSecOps简介(二)
- 启动页设计规范
- 《STL源码剖析》学习笔记-第2章 空间配置器
- javaweb学习总结(三十六)——使用JDBC进行批处理
- 【Sass-02】Sass基础语法
- 第十三课功能键之开根号——C#计算器编程教学