gpt4 book ai didi

grails - 如何将 Grails 服务注入(inject) src/groovy 类

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

Grails 2.4.x 在这里。如果我使用 grails create-service com.example.Widget 创建了 Grails 服务,那么我如何将该服务的引用(“bean”)注入(inject)到 src/groovy 下的类中?

实际上,官方 Grails 文档中的任何地方都没有对此进行解释,并且广泛的搜索返回了 nadda。

最佳答案

1) 您可以使用 Spring Beans 将服务注入(inject)到非人工 groovy 文件中,使用 resources.groovy :

MyClass.groovy

class MyClass {
def widgetService
...
}

资源.groovy
beans = {
myclass(com.example.MyClass) {
widgetService = ref('widgetService')
}
}

2) 还有一个额外的 @Autowired可以做同样事情的注释:

MyClass.groovy
import org.springframework.beans.factory.annotation.Autowired

class MyClass {
@Autowired
def widget
...
}

资源.groovy
beans = {
myclass(com.example.MyClass) {}
}

注意 - 这次是 myclass bean 不需要对 widget 的引用.

3) 除了注入(inject) WidgetService 之外,还有另一种方法。 - 使用 Holders类获取 grailsApplication这将引用现有的 bean。
import grails.util.Holders

class MyClass {
def widgetService = Holders.grailsApplication.mainContext.getBean('widgetService')

...
}

**更新**

4) 还有另一个选项是 1) 和 2) 的混合 -
autowire=true 注入(inject)的 bean(s)在 内资源.groovy :

MyClass.groovy
class MyClass {
def widgetService
...
}

资源.groovy
beans = {
myclass(com.example.MyClass) { bean ->
bean.autowire = true
}
}

这是我一直在本地使用的方法,因为我觉得它是最干净的,但它确实更多地利用了 Grail 的“魔法”(无论好坏)。

关于grails - 如何将 Grails 服务注入(inject) src/groovy 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33427697/

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