gpt4 book ai didi

grails - 如何注入(inject)与 grails 中的任何域类无关的自定义服务?

转载 作者:行者123 更新时间:2023-12-02 15:42:41 24 4
gpt4 key购买 nike

我希望在我的 grails 项目中创建 DAO 层,它不会与任何域类相关联,并且会与我的项目的辅助数据库进行交互。当我尝试在任何 Controller 中注入(inject)服务时出现以下错误:

"Cannot invoke method abc() on null object"

但是,当我使用 new 初始化服务时,该错误已解决并完美运行。 Controller 中的关键字,但我知道这不是必需的,因为 grails 应该处理它。谁能告诉我我错过了什么?

最佳答案

我认为这个问题与服务是否与域类相关联没有任何关系。 DI 容器对此一无所知。

如果你有这样的 Controller :

// grails-app/controllers/demo/SomeController.groovy
package demo

class SomeController {
SomeService someService

def someControllerAction() {
someService.abc()
// ...
}
}

还有这样的服务...
// grails-app/services/demo/SomeService.groovy
package demo

class SomeService {
void abc() {
// ...
}
}

那会很好用。

几乎不可能在没有看到你的代码的情况下肯定地说你做错了什么,但一种可能性是这样的,这是行不通的:
// grails-app/controllers/demo/SomeController.groovy
package demo

class SomeController {

def someControllerAction() {
// This is a local variable, not
// a property and as such will not
// be subjected to dependency injection.
SomeService someService

// ...
someService.abc()
// ...
}
}

此外,确保属性名称(上面示例中的 someService)与服务类名称匹配,但首字母小写(更一般地,确保属性名称与服务类名称的属性名称表示匹配,即通常就像类名的第一个字母小写一样简单)。

关于grails - 如何注入(inject)与 grails 中的任何域类无关的自定义服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260424/

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