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