问题
Using grails 2.4.2, quartz:1.0.2, I'm trying to gain access to configuration properties
class MyJob {
def grailsApplication
int propA
def MyJob() {
propA = grailsApplication.config.foo.bar.propAVal
}
...
}
grailsApplication, however, doesn't get injected, and is null.
Can't access any bean from Quartz Job in Grails supposedly relates to this, but I don't really see how the marked answer resolves the OP's question :-/
help? 10x
回答1:
The problem is probably that you are accessing grailsApplication
in constructor, where it's not injected yet.
I recommend to dump useless class property int propA
and do it this way:
def grailsApplication
def execute() {
def propA = grailsApplication.config.foo.bar.propAVal
...
//use propA for something
}
回答2:
import grails.util.Holders
class MyJob {
def grailsApplication = Holders.getGrailsApplication()
int propA
def MyJob() {
propA = grailsApplication.config.foo.bar.propAVal
}
...
}
In this way you can access 'grailsApplication' from a Quartz job or even from any groovy file inside "/src" folder.
回答3:
For those using grails 3.x the type of grailsApplication now has to be specified explicitly. E.g. instead of:
def grailsApplication
you need to use:
import grails.core.GrailsApplication
...
GrailsApplication grailsApplication
If you don't you'll receive the following compilation error:
The return type of java.lang.Object getGrailsApplication() in namespace.classnameJob is incompatible with grails.core.GrailsApplication in grails.plugins.quartz.QuartzJob
来源:https://stackoverflow.com/questions/24992721/accessing-grails-application-config-from-a-quartz-job