使用grails 2.4.2,quartz:1.0.2,我尝试访问配置属性
class MyJob {
def grailsApplication
int propA
def MyJob() {
propA = grailsApplication.config.foo.bar.propAVal
}
...
}
然而,grailsApplication并没有被注入,并且为空。
Can't access any bean from Quartz Job in Grails据说与此有关,但我并不确定这个明确的答案如何解决OP的问题: - /
帮助? 10X
答案 0 :(得分:1)
问题可能是你在构造函数中访问grailsApplication
,它还没有被注入。
我建议转储无用的类属性int propA
并以这种方式执行:
def grailsApplication
def execute() {
def propA = grailsApplication.config.foo.bar.propAVal
...
//use propA for something
}
答案 1 :(得分:1)
import grails.util.Holders
class MyJob {
def grailsApplication = Holders.getGrailsApplication()
int propA
def MyJob() {
propA = grailsApplication.config.foo.bar.propAVal
}
...
}
通过这种方式,您可以从Quartz作业或“/ src”文件夹中的任何groovy文件中访问“grailsApplication”。
答案 2 :(得分:0)
对于使用grails 3.x的用户,现在必须明确指定 grailsApplication 的类型。例如。而不是:
def grailsApplication
你需要使用:
import grails.core.GrailsApplication
...
GrailsApplication grailsApplication
如果您没有收到以下编译错误:
namespace.classnameJob 中的java.lang.Object getGrailsApplication()的返回类型与grails.core.GrailsApplication不兼容 grails.plugins.quartz.QuartzJob