我正在尝试访问grailsApplication
下的groovy类中的src/groovy
,但我得到一个空指针异常。我还尝试将服务注入到同一个类和相同的结果中。如何从groovy类访问grailsApplication
或服务? (我使用的是Grails 1.3.7)
答案 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文档,请参阅: