@Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class)
时间: 2023-07-21 12:59:08 浏览: 225
这是一个Spring框架中的注解,用于声明一个方法需要在一个新的事务中运行。它的作用是将当前方法加入到一个新的事务中,并且如果在该方法执行期间出现异常,则回滚该事务。其中,Propagation.REQUIRES_NEW表示需要在一个新的事务中执行该方法,而rollbackFor = Exception.class表示如果该方法中出现任何异常,都需要回滚该事务。
相关问题
@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 ]
阅读全文