Spring 事务的传播行为和隔离级别?

Spring 面试题发布于

一、七种传播行为

传播行为 说明
REQUIRED(默认) 有事务就加入,没有就新建
REQUIRES_NEW 总是新建事务,挂起当前事务
SUPPORTS 有事务就加入,没有就非事务执行
NOT_SUPPORTED 非事务执行,挂起当前事务
MANDATORY 必须有事务,否则抛异常
NEVER 必须非事务,有事务抛异常
NESTED 嵌套事务,savepoint

二、隔离级别

同数据库:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE,默认用数据库默认。

三、事务失效场景

  • 方法非 public
  • 同类内部方法调用(绕过代理)
  • 异常被 try-catch 吞掉
  • 抛出非 RuntimeException(默认不回滚)
  • 数据库引擎不支持事务(如 MyISAM)