在groovy类中访问grailsApplication或Service

Edd*_*ark 10 service grails groovy

我试图访问grailsApplicationgroovy类,src/groovy但我得到一个空指针异常.我还尝试将服务注入到同一个类和相同的结果中.我如何grailsApplication从groovy类访问或服务?(我使用的是Grails 1.3.7)

Tob*_*aft 9

ApplicationHolder类在较新的Grails版本(2.0及更高版本)中已弃用.

还有另一种方式,在Burt的一篇博文中有描述:http://burtbeckwith.com/blog/?p = 1017

  • 博客帖子经常被删除 - 对于后人的缘故,请在帖子中包含实际答案,而不仅仅是链接! (5认同)

GSA*_*SAN 6

在Grails 2.0之后,你应该使用:

 def grailsApplication = Holders.grailsApplication
Run Code Online (Sandbox Code Playgroud)


Arc*_*her 5

依赖注入不适用于groovy类src/groovy.你可以像这样grailsApplication使用访问权限ApplicationHolder:

import org.codehaus.groovy.grails.commons.ApplicationHolder

def grailsApplication = ApplicationHolder.application
Run Code Online (Sandbox Code Playgroud)

您可以访问以下所有服务:

def allServicesArtefacts = grailsApplication.services
Run Code Online (Sandbox Code Playgroud)

  • 对于grails 1.3.7,它是一个完美的解决方案.但是对于grails v2 +,你应该使用Tobias Kraft的解决方案. (3认同)