Spring事务传播方式对事务提交回滚的影响

主要测试的几大事务传播方式

  • REQUIRES (默认)必定有事务,调用方有事务时加入,没有时创建一个事务
  • NOT_SUPPORTED 必定无事务
  • NEW_REQUIRES 必定创建一个新事务,与调用方事务存在隔离,异常时不会使调用方事务标记为rollback-only,适合在【被调用方】不想因为【调用方】异常影响事务提交时使用
  • NESTED 嵌套事务,与调用方事务无隔离,异常时不会使调用方事务标记为rollback-only,适合在【调用方】不想因为【被调用方】异常影响事务提交时使用
  • 无@Transaction

调用情况(@Transaction(rollbackFor = Exception)

1、场景一

正常执行无异常和调用方事务一起提交REQUIRES
NESTED
无@Transaction
被调用完后立即提交事务NEW_REQUIRES
NOT_SUPPORTED

2、场景二

调用方出现异常和调用方事务一起回滚REQUIRES
NESTED
无@Transaction
不和调用方事务一起回滚NEW_REQUIRES
NOT_SUPPORTED

3、场景三

被调用方出现异常(try catch包裹调用) 调用方事务被标记rollback-only,在最终提交时回滚 REQUIRES
调用方不受影响,正常提交。被调用方事务回滚 NESTED
NEW_REQUIRES
调用方不受影响,正常提交。被调用方无事务,不回滚 NOT_SUPPORTED
无@Transaction
posted on 2025-12-31 10:16  紫色阳了小人儿  阅读(0)  评论(0)    收藏  举报