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

标签 grails grails-plugin

我正在尝试将我的 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/

相关文章:

grails - Grails 中的 Fixtures 插件引用完整性异常

grails - 如何使用Groovy MarkupBuilder在节点末尾打印纯内容?

javascript - 逐行比较两个html表数据并使用jQuery突出显示

grails - Spring 安全性无法正常工作

grails - Spring Security URL 映射 Grails

Grails Spring Security 1.2.1和eraseCredentialsAfterAuthentication

grails - Grails sitemesh是否有不支持带有开放HTML正文标签的语句的解决方法?

unit-testing - 为什么即使使用 Spocks 的 Mock() 模拟了底层 Controller ,此方法仍返回 null?

grails - 在 Grails Spring Security 插件中将 AccessDecisionManager 更改为 UnanimousBased

grails - Grails 中的简单验证码不显示图像