访问grailsApplication或服务的Groovy类(Access grailsApplic

2019-08-07 03:41发布

我试图访问grailsApplication下Groovy类src/groovy ,但我得到一个空指针异常。 我也试图注入服务为同一类和相同的结果。 如何访问grailsApplication或Groovy类服务? (我使用Grails 1.3.7)

Answer 1:

依赖注入不会为下Groovy类工作src/groovy 。 你可以得到访问grailsApplication使用ApplicationHolder是这样的:

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

def grailsApplication = ApplicationHolder.application

您可以访问所有类似的服务:

def allServicesArtefacts = grailsApplication.services


Answer 2:

所述ApplicationHolder类在较新的版本的Grails(2.0以上)弃用。

还有另外一种方法,这是在伯氏的相关博客文章的一个描述: http://burtbeckwith.com/blog/?p=1017



Answer 3:

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

 def grailsApplication = Holders.grailsApplication


Answer 4:

如果您有想要与SRC /常规或SRC / java或甚至第三方罐子依赖注入参加班级所有你需要做的是在grails-app / conf目录/春/ resources.groovy配置它们。

如果你有类mypackage.MyClass在看起来像这样你的src /常规目录:

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

然后通过添加以下到的grails-app / conf目录/春/ resoruces.groovy它会得到自动注射:

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

这将Grails中的任何版本thusfar,就像我说的,你甚至可以使用第三方jar文件 - 例如我永远在我resources.groovy如下:

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

为了更全面的春/ Grails的文档,请参见:

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



文章来源: Access grailsApplication or Service in groovy class