Spring事务传播如何实现跨多个方法调用保持一致性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计991个文字,预计阅读时间需要4分钟。
Spring的事务传播+今日突然想起,很久以前有一次面试的时候,面试官问我关于事务传播的问题,当时对Spring,以至于Spring的事务都还不太了解,今天记录一下后来逐渐理解的知识。
Spring中常说的事务传播指的是在多个方法中,事务的边界如何传播和延续。以下是Spring中常见的事务传播行为:
1. REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
2.SUPPORTS:如果当前存在事务,则加入该事务,如果当前没有事务,则以非事务方式执行。
3.MANDATORY:如果当前存在事务,则加入该事务,如果当前没有事务,则抛出异常。
4.REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
5.NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则把当前事务挂起。
6.NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
7.NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则行为类似于REQUIRED。
在实际应用中,根据业务需求选择合适的事务传播行为,可以更好地控制事务的边界和传播。
本文共计991个文字,预计阅读时间需要4分钟。
Spring的事务传播+今日突然想起,很久以前有一次面试的时候,面试官问我关于事务传播的问题,当时对Spring,以至于Spring的事务都还不太了解,今天记录一下后来逐渐理解的知识。
Spring中常说的事务传播指的是在多个方法中,事务的边界如何传播和延续。以下是Spring中常见的事务传播行为:
1. REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
2.SUPPORTS:如果当前存在事务,则加入该事务,如果当前没有事务,则以非事务方式执行。
3.MANDATORY:如果当前存在事务,则加入该事务,如果当前没有事务,则抛出异常。
4.REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
5.NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则把当前事务挂起。
6.NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
7.NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则行为类似于REQUIRED。
在实际应用中,根据业务需求选择合适的事务传播行为,可以更好地控制事务的边界和传播。

