Spring的事务管理实现原理初探

简介: 这里主要是通过分析部分源码进行剖析Spring事务管理的实现原理。再分析源码前,现从理论上大概分析哈:纯JDBC操作数据库的基本步骤:1.

这里主要是通过分析部分源码进行剖析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注解的类时,会自动生成这些类的代理,并放置再容器中,以便备用。如:

总结: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>标签时,截图如下:


目录
相关文章
|
18天前
|
Java 应用服务中间件 Nacos
Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)
Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)
31 0
|
1月前
|
安全 Java Spring
Spring之Aop的底层原理
Spring之Aop的底层原理
|
2月前
|
设计模式 前端开发 Java
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
34 0
|
2月前
|
设计模式 Java uml
Spring AOP 原理
Spring AOP 原理
12 0
|
2月前
|
XML Java Shell
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究Spring的核心注解开发和实现指南(Spring5的常见的注解)
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究Spring的核心注解开发和实现指南(Spring5的常见的注解)
20 1
|
2月前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
79 1
|
2月前
|
XML 存储 缓存
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache管理器的实战开发指南(修正篇)
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache管理器的实战开发指南(修正篇)
35 0
|
12天前
|
Java 关系型数据库 数据库
Spring Boot多数据源及事务管理:概念与实战
【4月更文挑战第29天】在复杂的企业级应用中,经常需要访问和管理多个数据源。Spring Boot通过灵活的配置和强大的框架支持,可以轻松实现多数据源的整合及事务管理。本篇博客将探讨如何在Spring Boot中配置多数据源,并详细介绍事务管理的策略和实践。
37 3
|
2月前
|
存储 XML 缓存
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南(一)
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南
102 0
|
1天前
|
监控 安全 Java
Spring cloud原理详解
Spring cloud原理详解
10 0