详细讲述一下spring的事务的传播行为
时间: 2024-06-11 19:10:57 浏览: 8
Spring的事务传播行为指的是在多个事务方法进行嵌套调用时,事务应该如何传播给被调用的方法。
Spring提供了7种事务传播行为,分别是:
1. PROPAGATION_REQUIRED(默认):要求当前方法必须在一个事务内执行,如果当前已经存在一个事务,则加入该事务,否则创建一个新事务。
2. PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务,否则不创建新事务。
3. PROPAGATION_MANDATORY:要求当前方法必须在一个事务内执行,如果当前不存在事务,则抛出异常。
4. PROPAGATION_REQUIRES_NEW:创建一个新事务,并在该事务中执行当前方法,如果当前存在事务,则将当前事务挂起。
5. PROPAGATION_NOT_SUPPORTED:如果当前存在事务,则将该事务挂起,并在当前方法中不使用事务。
6. PROPAGATION_NEVER:要求当前方法不在事务内执行,如果当前存在事务,则抛出异常。
7. PROPAGATION_NESTED:如果当前存在事务,则在该事务的嵌套事务中执行当前方法,如果当前不存在事务,则创建一个新的嵌套事务。
其中,PROPAGATION_REQUIRED是最常用的传播行为,它保证了方法的所有操作都在同一个事务中执行,如果方法执行失败,则会回滚整个事务。PROPAGATION_REQUIRES_NEW则用于需要独立事务的情况,它会创建一个新的事务,并在其中执行方法。PROPAGATION_NESTED则用于嵌套事务的情况,它会在当前事务的基础上创建一个新的嵌套事务,并在其中执行方法,如果嵌套事务失败,则会回滚到嵌套事务的保存点,而不会回滚整个事务。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)