springboot的事务传播机制应该如何使用
时间: 2023-05-23 09:01:14 浏览: 104
在Spring Boot中,事务传播机制是用来控制事务执行的范围和传递行为的,从而保证数据的一致性和完整性。可以使用以下几种传播行为:
1. REQUIRED:默认传播行为,如果外层有事务,就加入该事务,如果外层没有事务,则新开一个事务
2. SUPPORTS:如果外层有事务,就加入该事务,如果外层没有事务,则以非事务的方式执行
3. MANDATORY:必须在一个已有的事务中执行,否则会抛出异常
4. REQUIRES_NEW:挂起当前事务,开启一个新的事务,执行完后再恢复之前的事务
5. NOT_SUPPORTED:以非事务的方式执行,如果外层有事务,就挂起该事务
6. NEVER:以非事务的方式执行,如果外层有事务,则抛出异常
7. NESTED:在外层事务中开启一个嵌套事务,如果外层事务提交,则该事务也会提交,如果外层事务回滚,则该事务也会回滚
根据具体情况选择合适的传播行为可以更加灵活地控制事务的执行。
相关问题
springboot事务传播机制
Spring Boot事务传播机制是指在一个事务方法调用另一个事务方法时,如何处理这些事务的传播行为。Spring中定义了多种事务传播行为,可供开发者按照实际需要使用,常见事务传播行为如下:
1. REQUIRED:默认的事务传播机制,如果当前没有事务,那么就新建一个事务,如果已经有事务在进行中,那么就加入到这个事务中,不管是抛出异常还是正常结束都会提交事务。
2. SUPPORTS:如果当前有事务在进行中,那么就加入到这个事务中,如果当前没有事务在进行中,那么就不开启事务。
3. MANDATORY:如果当前有事务在进行中,那么就加入到这个事务中,如果当前没有事务,在抛出异常。
4. REQUIRES_NEW:无论当前是否有事务在进行,都会新建一个事务并执行。
5. NOT_SUPPORTED:当前如果有事务在进行,就将事务挂起,执行完后再继续当前事务。
6. NEVER:当前如果有事务在进行,直接抛出异常。
7. NESTED:在当前事务的嵌套事务中执行,并独立于嵌套事务之外的其他所有事务运作,如果抛出异常则只回滚当前事务的嵌套事务,而不包括其他事务。
Springboot事务传播机制MANDATORY在什么情况下使用
在SpringBoot事务中,MANDATORY传播机制被用于当前事务必须存在的情况。当方法被调用时,如果当前存在事务,则方法在该事务中运行,否则将抛出异常。MANDATORY传播机制通常在对数据库进行修改操作的方法中使用,以确保操作被执行在一个已经存在的事务中,从而避免数据不一致的情况。
阅读全文