gpt4 book ai didi

grails - 在 Grails PluginDescriptor.groovy 文件中注入(inject)服务?

转载 作者:行者123 更新时间:2023-12-02 15:05:58 25 4
gpt4 key购买 nike

我正在尝试将我的 Grails 应用程序转换/转换为 Grails 插件。这篇文章对我这样做很有帮助:
http://burtbeckwith.com/blog/?p=1973

在复制粘贴文件并按照上面的链接时,我被 Bootstrap.groovy 文件卡住了。虽然我必须将我的 Bootstrap.groovy 的 init() 代码粘贴到 ".doWithApplicationContext"中,但我已经这样做了,但我在注入(inject)服务方面遇到了问题。这是我的应用程序的引导文件:

class BootStrap {

//Injecting voice recordign service
def processRecordingVoiceRecognizitonService

//Injecting Service to Connect to AMQ Server to Send Recording
def AMQConnectionManagementService

//Injecting AMQ Publisher to Publish Voice Recognition Results
def messagePublisherService

//Injecting AMQ Consumer to Consume Voice Model Creation Notifications
def messageConsumerService
.
.
.
.
.
.
.

可以看到我在我的 Bootstrap 中注入(inject)服务。
我在 PluginDeciptor.groovy 的开头粘贴了那段代码,但 Intellij Idea 没有显示注入(inject)标志,这意味着服务没有被注入(inject)。
实际上可以在插件描述符中注入(inject)服务吗?如果不是,那么在服务文件中初始化和建立必要连接的方法是什么?

我找到了一个相关的问题,但无法理解。这是链接以防万一。 inject service into instance of src/groovy class

最佳答案

插件描述符生命周期中 BootStrap 的等效点是 doWithApplicationContext ,它接收对 ApplicationContext 的引用您可以从中获取所需的任何服务。您不能以正常方式将服务注入(inject)描述符,因为描述符在 ApplicationContext 之前被实例化(并调用了它的几个关键方法)。已设置。

def doWithApplicationContext = { applicationContext ->
applicationContext.messagePublisherService.someMethodName()

或者,插件可以通过将其命名为 MyPluginBootStrap.groovy 来为应用程序提供引导工件。 - grails-app/conf 中的任何 Groovy 类名称以 BootStrap 结尾的将被视为引导伪影,它只是普通的 BootStrap.groovy在被排除在“贡献”到依赖插件的应用程序之外的插件中。

关于grails - 在 Grails PluginDescriptor.groovy 文件中注入(inject)服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29345753/

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