Java 有没有办法将参数传递给quartz cron作业?

Java 有没有办法将参数传递给quartz cron作业?,java,spring,spring-boot,quartz-scheduler,quartz,Java,Spring,Spring Boot,Quartz Scheduler,Quartz,我在quartz(springboot应用程序)中有一个cron任务。 我已经为调度器、触发器、cron作业和所有其他bean创建了bean。 作业的目的是基于指定的cron表达式运行。但是对于每一次新的作业执行,我希望将特定于该作业的一些数据传递给作业细节对象。 但目前,当我尝试在JobDetailFactoryBean中传递此类数据时,它只创建了一次(这是第一次),对于作业的所有后续执行,都会传递相同的陈旧数据。每次执行作业时,我都要传递新的数据。 我怎样才能做到这一点呢?也许你可以使用某种

我在quartz(springboot应用程序)中有一个cron任务。 我已经为调度器、触发器、cron作业和所有其他bean创建了bean。 作业的目的是基于指定的cron表达式运行。但是对于每一次新的作业执行,我希望将特定于该作业的一些数据传递给作业细节对象。 但目前,当我尝试在JobDetailFactoryBean中传递此类数据时,它只创建了一次(这是第一次),对于作业的所有后续执行,都会传递相同的陈旧数据。每次执行作业时,我都要传递新的数据。
我怎样才能做到这一点呢?

也许你可以使用某种回调?所以在你的
工作中类似这样的事情

@Resource
private MyJobJobdataProvider dataProvider;

public void execute(JobExecutionContext context) throws JobExecutionException {
    JobData data = dataProvider.getData();
    /// configure job with the data before actual exection ...
}
其中
myjobdataprovider
将是提供此数据的任何组件:

@Component
public MyJobJobdataProvider {
    public Data getData() {
        //...
    }
    public void setData(Data data) {
        //...
    }
}

因此,与其尝试设置新数据,不如让作业在每次执行之前查询新数据。

这就是作业数据映射的用途。请检查方法和API

如果要在运行时以编程方式修改作业数据映射参数,有两个选项:

  • 获取调度程序参考,例如在方法中,并修改任何作业的所需作业数据映射参数。不幸的是,Quartz API没有提供更新作业详细信息的方法,因此如果您希望修改现有作业,则必须删除作业详细信息并添加新的作业详细信息

  • 让您的作业实现该接口。这使得Quartz在作业执行完成时自动持久化作业数据映射。例如,这可用于在上一个作业执行在某一点完成后,从该点恢复对数据的处理,等等


  • 根据您的第一点,我的理解是,它将编辑已创建的单个作业的作业数据映射。我想要的是,对于作业的每一次新执行,只需要一些与该执行相关的特定数据。我希望将数据关联到该特定作业实例的原因是,如果该作业失败并稍后尝试恢复自身,那么它应该将其相关数据取回。