我试图访问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