本节思维导图
事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式两种。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体的逻辑与事务处理解耦。生命式事务管理使业务代码逻辑不受污染,因此实际使用中声明式事务用的比较多。
声明式事务有两种方式,一种是在配置文件(XML)中做相关的事务规则声明,另一种是基于 @Transactional
注解的方式。本文着重介绍基于 @Transactional
注解的事务管理。
需要明确几点:
- 默认配置下 Spring 只会回滚运行时、未检查异常(继承自 RuntimeException 的异常)或者 Error。
@Transactional
注解只能应用到 public 方法才有效。
事务的实现原理
事务的实现原理。如果说你加了一个 @Transactional
注解,此时 Spring 会使用 AOP 思想,对你的这个方法在执行之前,先去开启一个事务。执行完毕之后,根据你的方法是否报错,来决定回滚还是提交事务。
@Transactional 注解的属性介绍
下面分别介绍一下 @Transactional
的几个属性
value 和 transactionManager 属性
它们两个是一样的意思。当配置了多个事务管理器时,可以使用该属性指定选择哪个事务管理器。
isolation 属性
事务的隔离级别,默认值为 Isolation.DEFAULT。可选的值有</