我正在尝试将Grails应用程序转换/转换为Grails插件。这篇文章对我这样做很有帮助: http://burtbeckwith.com/blog/?p=1973
在复制粘贴文件时,按照上面的链接我被困在Bootstrap.groovy文件中。虽然我必须将我的Bootstrap.groovy的init()代码粘贴到" .doWithApplicationContext"我已经这样做了,我有关于注入服务的问题。这是我的应用程序的Bootstrap文件:
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
.
.
.
.
.
.
.
我可以看到我在我的Bootstap中注入服务。 我在PluginDesciptor.groovy的开头粘贴了那段代码,但是Intellij Idea没有显示注入标志,这意味着没有注入服务。 实际上是否可以在插件描述符中注入服务?如果没有,那么在服务文件中初始化和建立必要连接的工作是什么?
我找到了一个相关的问题,但无法理解。这里是以防万一的链接。 inject service into instance of src/groovy class
答案 0 :(得分:2)
插件描述符生命周期中与BootStrap等效的点是doWithApplicationContext
,它接收对ApplicationContext
的引用,您可以从中获取所需的任何服务。您无法以正常方式将服务注入描述符,因为在设置ApplicationContext
之前,实例化了描述符(并调用了几个关键方法)。
def doWithApplicationContext = { applicationContext ->
applicationContext.messagePublisherService.someMethodName()
或者,插件可以通过命名MyPluginBootStrap.groovy
来为应用程序提供引导伪像 - grails-app/conf
中名称以 BootStrap结尾的任何Groovy类都将被视为一个bootstrap artefact,它只是插件中的普通BootStrap.groovy
被排除在“依赖于插件的应用程序”之外。