在groovy类中访问grailsApplication或Service

时间:2013-01-17 08:03:59

标签: grails service groovy

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

4 个答案:

答案 0 :(得分:9)

在较新的Grails版本(2.0及更高版本)中不推荐使用ApplicationHolder类。

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

答案 1 :(得分:6)

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

\s?

答案 2 :(得分:5)

依赖注入对src/groovy下的groovy类不起作用。您可以使用grailsApplication这样访问ApplicationHolder

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

def grailsApplication = ApplicationHolder.application

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

def allServicesArtefacts = grailsApplication.services

答案 3 :(得分:2)

如果您希望通过src / groovy或src / java或第三方jar进行依赖注入,那么您只需要在grails-app / conf / spring / resources.groovy中配置它们。 / p>

如果你的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,就像我说的你甚至可以使用第三方罐子 - 例如我总是在我的resources.groovy中有以下内容:

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

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

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