道歉,因为那里有很多链接,我尝试了一些例子,包括已经在我的项目中运行的非插件的东西:
我尝试过:
在我的插件描述符中:
def doWithSpring = {
someService(SomeService)
}
然后在我的结尾src / groovy
//def someService = Holders.grailsApplication.mainContext.getBean 'someService'
def someService
以上都不起作用......
如果我实例化服务,一切似乎都能正常工作,我宁愿注入它,只是花了很多时间做一些基本的事情:(
SomeService someService = new SomeService()
任何帮助将不胜感激
我之前(在插件中)是否应该包含conf / spring / resources.groovy并初始化bean?
答案 0 :(得分:2)
在这种情况下,与大多数情况一样,您可以在不使用持有者的情况下访问所需内容。 Groovy类实现ServletContextListener
,因此contextInitialized
方法的ServletContextEvent
事件包含ServletContext
。因此,没有必要使用ServletContextHolder
来获取ServletContext
- 它就在那里。您可以在FAQ中看到Spring ApplicationContext
作为属性存储在ServletContext
中。一旦你有了,你就可以访问你想要的任何Spring bean;在这种情况下,jenkinsService
和grailsApplication
bean(您可以直接从grailsApplication
获取配置而不使用Holders
。
我做了这些修改并进行了一系列清理,并发送了拉取请求。
答案 1 :(得分:0)
您可以将您的服务注入src/groovy
类,如下所示:
import com.example.SomeService
import grails.util.Holders
class SrcGroovy {
SomeService someService = Holders.applicationContext.getBean("someService")
// ...
}