Grails:插件在插件中将服务注入到src groovy中

时间:2014-10-31 16:32:47

标签: grails

道歉,因为那里有很多链接,我尝试了一些例子,包括已经在我的项目中运行的非插件的东西:

我尝试过:

在我的插件描述符中:

def doWithSpring = {
        someService(SomeService)
    }

然后在我的结尾src / groovy

//def someService = Holders.grailsApplication.mainContext.getBean 'someService'
def someService

以上都不起作用......

如果我实例化服务,一切似乎都能正常工作,我宁愿注入它,只是花了很多时间做一些基本的事情:(

SomeService someService = new SomeService()

任何帮助将不胜感激

我之前(在插件中)是否应该包含conf / spring / resources.groovy并初始化bean?

2 个答案:

答案 0 :(得分:2)

在这种情况下,与大多数情况一样,您可以在不使用持有者的情况下访问所需内容。 Groovy类实现ServletContextListener,因此contextInitialized方法的ServletContextEvent事件包含ServletContext。因此,没有必要使用ServletContextHolder来获取ServletContext - 它就在那里。您可以在FAQ中看到Spring ApplicationContext作为属性存储在ServletContext中。一旦你有了,你就可以访问你想要的任何Spring bean;在这种情况下,jenkinsServicegrailsApplication bean(您可以直接从grailsApplication获取配置而不使用Holders

我做了这些修改并进行了一系列清理,并发送了拉取请求。

答案 1 :(得分:0)

您可以将您的服务注入src/groovy类,如下所示:

import com.example.SomeService
import grails.util.Holders

class SrcGroovy {

    SomeService someService = Holders.applicationContext.getBean("someService")

    // ...
}