事务管理
2026年1月31日大约 2 分钟
事务管理
事务是一组操作的集合,是一个不可分割的工作单位,这些操作要么全部成功,要么全部失败。
知识回顾
在MySQL中,我们已经学习了其事务的概念,可以去回顾一下。
Spring事务管理
Spring中想要使用事务只需要使用@Transactional注解即可,Spring会自动为我们处理事务的开启、提交和回滚。
- 注解:
@Transactional - 位置:可以放在类、方法或接口上,通常放在方法上。
- 作用:表示该方法需要进行事务管理。在方法执行前,会开启事务;方法执行成功后,会提交事务;如果方法出现异常,则会会滚事务。
@Transactional属性详解
rollbackFor
- 作用:指定哪些异常会触发事务回滚。
- 默认行为:默认情况下,只有运行时异常(RuntimeException)才会触发事务回滚。
- 用法:可以通过
rollbackFor属性来指定其他异常类型。
@Transactional(rollbackFor = Exception.class) //这里表示所有异常都会触发回滚
public void someMethod() {
// 方法体
}propagation
- 作用:指定事务的传播行为。事务传播行为指的是一个事务方法被另一个事务方法调用时,事务方法如何进行事务控制。
- 常用值
| 属性值 | 说明 |
|---|---|
| REQUIRED | (默认) 如果有事务则加入该事务,否则新建一个事务。 |
| REQUIRES_NEW | 新建一个事务,无论调用者是否存在事务 |
| SUPPORTS | 如果有事务则加入该事务,否则以非事务方式执行 |
| NOT_SUPPORTED | 以非事务方式执行,如果有事务则挂起该事务(即在执行该方法时不执行事务,执行完成后在执行事务) |
| MANDATORY | 必须有事务,否则抛出异常 |
| NEVER | 必须以非事务方式执行,有事务则抛出异常 |
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void someMethod() {
// 方法体
}