10

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

4

4 回答 4

8

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

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

于 2013-01-17T09:00:11.967 回答
7

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

 def grailsApplication = Holders.grailsApplication
于 2017-07-18T14:29:05.053 回答
5

依赖注入不适用于src/groovy. 您可以像这样访问grailsApplication使用ApplicationHolder

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

def grailsApplication = ApplicationHolder.application

您可以像这样访问所有服务:

def allServicesArtefacts = grailsApplication.services
于 2013-01-17T08:42:39.443 回答
2

如果你有想要参与来自 src/groovy 或 src/java 甚至 3rd 方 jar 的依赖注入的类,你所要做的就是在 grails-app/conf/spring/resources.groovy 中配置它们。

如果您的 src/groovy 目录中有 mypackage.MyClass 类,如下所示:

package mypackage
class MyClass{
    def grailsApplication
    def myMethod(){
        //uses grailsApplication
    }
}

然后通过将以下内容添加到 grails-app/conf/spring/resoruces.groovy 它将自动注入:

myClass(mypackage.MyClass){bean->
    bean.autowire = "byName"    
}

到目前为止,这将适用于任何版本的 grails,就像我说的你甚至可以使用 3rd 方 jars - 例如,我的 resources.groovy 中总是有以下内容:

jdbcTemplate(org.springframework.jdbc.core.JdbcTemplate){
    dataSource = ref('dataSource')
}

有关更全面的 Spring/Grails 文档,请参阅:

http://grails.github.io/grails-doc/latest/guide/spring.html

于 2015-03-13T13:09:04.933 回答