@Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class) 涵义
时间: 2023-11-11 11:50:03 浏览: 189
@Transaction(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) 是Spring中的一个注解,用于标记事务的传播行为和回滚规则。其中,propagation参数表示事务的传播行为,而rollbackFor参数表示事务的回滚规则。
REQUIRES_NEW表示在方法执行期间,如果当前存在事务,则挂起该事务并创建一个新的事务。新的事务将独立于当前事务进行提交或回滚。这样可以确保方法执行时,无论外部事务是否已经回滚,该方法对数据库的操作都会被提交。
rollbackFor = Exception.class表示当方法中抛出Exception或其子类的异常时,事务将进行回滚。也可以根据具体需求指定其他异常类。
相关问题
@Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class)
这是一个Spring框架中的注解,用于声明一个方法需要在一个新的事务中运行。它的作用是将当前方法加入到一个新的事务中,并且如果在该方法执行期间出现异常,则回滚该事务。其中,Propagation.REQUIRES_NEW表示需要在一个新的事务中执行该方法,而rollbackFor = Exception.class表示如果该方法中出现任何异常,都需要回滚该事务。
@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 ]
阅读全文