gpt4 book ai didi

spring - Grails:有时会忽略Spring的@Transactional批注

转载 作者:行者123 更新时间:2023-12-02 14:56:53 26 4
gpt4 key购买 nike

在下面的示例中,尽管两个互斥的mandatory()批注之一必须引发异常:@TransactionalPropagation.NEVER,但我成功地落入了终点Propagation.MANDATORY。但是代码已成功执行。

怎么可能呢?

我的一些(并非全部)服务受此影响,我想了解原因。

class NewService {

static transactional = true

boolean process() {
return never()
}

@Transactional(propagation = Propagation.NEVER)
boolean never() {
return mandatory()
}

@Transactional(propagation = Propagation.MANDATORY)
boolean mandatory() {
// successfully breakpointed here o_O
return true
}
}

Grails 2.2.0

最佳答案

看来您正在绕过Bean代理,因为Burt Beckwith(幻灯片23)将其称为“无意中绕过了Bean代理”。

您需要获取代理并在其上执行您的方法。

@Transactional(propagation = Propagation.NEVER)
boolean never() {
def myproxy= grailsApplication.mainContext.newService
return myproxy.mandatory()
}

@Transactional(propagation = Propagation.MANDATORY)
boolean mandatory() {
// successfully breakpointed here o_O
return true
}

关于spring - Grails:有时会忽略Spring的@Transactional批注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232769/

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