gpt4 book ai didi

grails - 在域类方法中调用服务方法时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 14:29:18 25 4
gpt4 key购买 nike

根据 Grails,应该可以在域类中使用服务。但是当我运行以下简单示例时,grails run-app 失败并出现 NullPointerException:“无法在空对象上调用方法 test()”

要重现使用以下代码片段:

Bootstrap .groovy:

class BootStrap {
def init = { servletContext ->
new Test().test()
}
def destroy = {
}
}

服务:
@Transactional
class TestService {
def test() {
}
}

和域类:
class Test {
def testService

def test() {
testService.test()
}
}

这发生在 Grails 3.2.9 和 3.3.0 上。这是 Grails 错误还是 GORM 失败,而不是自动将服务注入(inject)域类?

解决方案:
对于所有想知道使用“静态映射 = { autowire true }”的解决方案是什么(参见 erichelgeson 的答案)的人。但是测试这两种解决方案,我发现“静态映射......”在 Grails 3.3.0 和 3.2.9 中有效,因此在 application.yml 中全局设置它只适用于 Grails 3.2.9,但不适用于 Grails 3.3.0你。

最佳答案

出于性能原因,最新版本的 Grails(3.2.9+)默认禁用域类的 Autowiring 。您可以重新启用它:

每个域:

static mapping = {
autowire true
}

或全局在 application.yml/groovy
grails.gorm.autowire = true

查看更多@ http://gorm.grails.org/6.1.x/hibernate/manual/index.html
第 1.2.9 节

关于grails - 在域类方法中调用服务方法时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45855211/

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