gpt4 book ai didi

当注入(inject)的服务具有较旧的 Grails 版本时,Grails 服务注入(inject) null

转载 作者:行者123 更新时间:2023-12-02 14:07:16 24 4
gpt4 key购买 nike

我写了一个 Grails 插件,用 Grails 2.1.1 编写,它提供服务。现在,我使用 Grails 2.4.4 创建了一个新的 Grails 项目,并想注入(inject)该服务,但是失败了。

package testproject

class HomeController {

def myService

def index() {
println myService
}
}

总是 null被打印。我使用 Grails 2.4.4 项目和 Grail2 2.4.3 项目对此进行了测试。当我使用 Grails 2.1.1 创建我的 Grails 项目时,它可以工作。

为什么?不应该是较新版本可以访问的服务吗?我是否总是必须升级包含服务的插件才能使用更新的 Grails 版本?

最佳答案

我也有这个问题,直到 2.4.4 才出现。我有一个依赖于 Spring Security Plugin 的自定义安全插件。在我的插件中,我在 doWithSpring 中设置了一个自定义用户详细信息服务。这个定义看起来像这样:

    userDetailsService(UserService) {
grailsApplication = ref('grailsApplication')
errorService = ref('errorService')
}

我在我的应用程序和插件中引用了 userService。这些引用在 Grails 2.4.4 中停止注入(inject)。我能够通过用 userDetailsS​​ervice 替换这些引用来修复它。不过我不喜欢这样,因为引用看起来像是指向该服务的 Spring Security 版本,并且我正在调用仅存在于我的 UserService 类中的方法。

无论如何,我不确定它是否是 2.4.4 中的错误或错误修复,但请检查并确保您的插件和/或 resources.groovy 文件没有将您的 MyService 类重新定义为其他内容。

关于当注入(inject)的服务具有较旧的 Grails 版本时,Grails 服务注入(inject) null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26979225/

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