gpt4 book ai didi

java - @AfterReturning 方面在切入点方法的同一事务中执行?

转载 作者:行者123 更新时间:2023-11-30 07:09:52 24 4
gpt4 key购买 nike

我需要在执行函数后执行任务。我为此使用了 Aspect。但我有些困惑。

我在 Spring 服务中有一个函数 A()。

@Transactional(readOnly = false,
isolation = Isolation.DEFAULT,
propagation = Propagation.REQUIRED,
rollbackFor = {Exception.class})
void A() {
//Do Something
}

我在这个函数上有一个@Afterreturning方面。

 @AfterReturning(pointcut = "execution(Sevice.saverecord(..)) ")
public void processNotifications(JoinPoint jp) {}

我想知道这个方面是否会使用方法A()的事务,或者它会自动创建一个新事务。因为我没有在这个方面方法上定义任何事务。

我尝试在两种方法中使用 TransactionAspectSupport.currentTransactionStatus().toString() 打印交易详细信息。我得到了两个不同的 ID。

任何人都可以解释一下这是否意味着有两笔交易,如果是,第二笔交易来自哪里?

最佳答案

@AfterReturning方面与建议方法在同一事务中执行。

调用事务方法时的执行顺序如下图所示(ref - spring docs )

Spring Transaction Flow

方面(即自定义顾问程序)可以配置为在事务建议之前或之后运行,默认情况下之后运行。

有关如何配置自定义顾问程序以在事务建议之前运行的进一步引用,请使用 Ordered如上所述here .

关于java - @AfterReturning 方面在切入点方法的同一事务中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com