Spring 事务的传播行为和隔离级别?
Spring 面试题发布于
一、七种传播行为
| 传播行为 | 说明 |
|---|---|
| REQUIRED(默认) | 有事务就加入,没有就新建 |
| REQUIRES_NEW | 总是新建事务,挂起当前事务 |
| SUPPORTS | 有事务就加入,没有就非事务执行 |
| NOT_SUPPORTED | 非事务执行,挂起当前事务 |
| MANDATORY | 必须有事务,否则抛异常 |
| NEVER | 必须非事务,有事务抛异常 |
| NESTED | 嵌套事务,savepoint |
二、隔离级别
同数据库:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE,默认用数据库默认。
三、事务失效场景
- 方法非 public
- 同类内部方法调用(绕过代理)
- 异常被 try-catch 吞掉
- 抛出非 RuntimeException(默认不回滚)
- 数据库引擎不支持事务(如 MyISAM)