@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)的作用
时间: 2023-11-11 10:57:23 浏览: 71
@Transacational注解是Spring框架提供的事务管理注解,它可以被用来标记一个方法,使得该方法在调用时自动开启事务,并在方法执行完成后根据执行结果选择提交或回滚事务。其中rollbackFor属性指定了哪些异常需要回滚事务,Propagation.REQUIRES_NEW表示该方法将会创建一个新的事务,如果当前存在事务,则将当前事务挂起。因此,@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)的作用是,保证方法在执行时会创建一个新的事务,并且在方法执行过程中,如果出现了Exception及其子类异常,则会回滚事务。
相关问题
@Transactional(rollbackFor=Exception.class,propagation=Propagation.REQUIRES_NEW)
@Transactional(rollbackFor=Exception.class,propagation=Propagation.REQUIRES_NEW)是Spring框架中用于声明事务的注解。其中rollbackFor表示遇到哪些异常需要回滚事务,Propagation.REQUIRES_NEW表示需要创建一个新的事务来执行该方法,即使当前已经存在一个事务。这个注解可以用在类或方法上,用于控制事务的行为。在方法上使用该注解会覆盖在类上使用该注解的行为。
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) 是一个用于事务管理的注解。它包含两个属性,即rollbackFor和propagation。
rollbackFor属性指定了在哪些异常情况下需要进行回滚操作。在这个例子中,设置为Exception.class表示只要出现任何Exception的子类异常,都会触发回滚操作。
propagation属性指定了事务的传播级别。在这个例子中,设置为Propagation.REQUIRES_NEW表示每次调用被注解的方法时都会开启一个新的事务,而不会沿用已有的事务。
这个注解被用在方法上,用于标识方法需要在事务的支持下执行。在这个例子中,methodB方法被标记为@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW),表示该方法将在一个独立的事务中执行,并且发生异常时会触发回滚操作。
注意,如果methodB方法是在methodA方法中被调用的,而且它们在同一个类中,那么methodB抛出的异常不会导致methodA的事务回滚。因为@Transactional注解的传播级别是类级别的,所以回滚点会被标记在methodA的事务上。这意味着methodB中的update操作不会被回滚。只有当methodB方法单独被调用时,才会触发其独立的事务和回滚操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Transactional-循环中事务单独回滚](https://blog.csdn.net/qq_24409613/article/details/103280982)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文