Spring事务传播行为总结

59 阅读1分钟

事务传播行为介绍 Spring中的7个事务传播行为:

事务行为说明特点
PROPAGATION_REQUIRED支持当前事务,假设当前没有事务。就新建一个事务父事务与子事务要么都成功,要么都失败
PROPAGATION_SUPPORTS支持当前事务,假设当前没有事务,就以非事务方式运行
PROPAGATION_MANDATORY支持当前事务,假设当前没有事务,就抛出异常
PROPAGATION_REQUIRES_NEW新建事务,假设当前存在事务。把当前事务挂起子事务可以单独提交,提交后,父事务的异常不影响子事务。如果子事务抛异常被父事务catch了,也不影响父事务
PROPAGATION_NOT_SUPPORTED以非事务方式运行操作。假设当前存在事务,就把当前事务挂起
PROPAGATION_NEVER以非事务方式运行,假设当前存在事务,则抛出异常
PROPAGATION_NESTED如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。子事务不能单独提交,子事务的提交依赖于外层事务,但是可以独立回滚,父事务回滚,子事务也会回滚。如果子事务抛异常被父事务catch了,也不影响父事务