gpt4 book ai didi

Grails - 在计划作业中使用 cron 表达式的属性值

转载 作者:行者123 更新时间:2023-12-02 07:16:20 24 4
gpt4 key购买 nike

我正在使用 Grails 的 Quartz 插件并且有一个简单的工作:

class MyJob{

static triggers = {
cron name: 'MyJobTrigger', cronExpression: '0 0/1 * * * ?'
}
def execute(){
println "do some work"
}
}

一切正常,作业按预期每分钟都会启动。

现在我希望 cron 表达式是属性驱动的,这样我就可以在不同的环境中覆盖。所以 Config.groovy 包含默认值:

myJob.cron = '0 0/1 * * * * ?'

我将我的类(class)更改为:

   GrailsApplication grailsApplication

static triggers = {
cron name: 'MyJobTrigger', cronExpression: grailsApplication.config.myJob.cron
}

当我运行代码时,出现此错误:

Caused by MissingPropertyException: No such property: grailsApplication for class: MyJob

假设这与 MyJob 类的加载/初始化方式有关,那么在注入(inject) GrailsApplication 之前创建的静态触发器??? GrailsApplication 的这种使用是我获取项目属性的常用方法。

我还能如何拥有属性驱动的 cron 触发器?

最佳答案

刚刚遇到了这个问题,并将调度添加到 Bootstrap.groovy 效果很好。在 MyJob 类中,将触发器设置为空闭包:

class MyJob {

static triggers = {
// Job is scheduled in Bootstrap.groovy so that it can be externalized
}

def execute() {
println "do some work"
}
}

然后在 Bootstrap.groovy 文件中进行如下设置:

class BootStrap {

def grailsApplication

def init = { servletContext ->
MyJob.schedule(grailsApplication.config.myJob.cron)
}
}

关于Grails - 在计划作业中使用 cron 表达式的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18613258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com