【发布时间】:2016-08-31 16:26:01
【问题描述】:
我参与了一个项目,但遇到了问题。自动实例化我的对象类型 jobdetail 的 newJob 方法对我没有好处。我需要手动实例化 newJob 以通过我选择的对象将其作为参数传递,但我不知道如何。有任何想法吗?谢谢。
【问题讨论】:
标签: quartz-scheduler
我参与了一个项目,但遇到了问题。自动实例化我的对象类型 jobdetail 的 newJob 方法对我没有好处。我需要手动实例化 newJob 以通过我选择的对象将其作为参数传递,但我不知道如何。有任何想法吗?谢谢。
【问题讨论】:
标签: quartz-scheduler
您不能直接将参数传递给作业。
相反,您可以做的是使用JobDataMap,它将由调度程序直接传递,如here 所述。例如(在 Java 中):
// define the job and tie it to our DumbJob class
JobDetail job = newJob(DumbJob.class)
.withIdentity("myJob", "group1") // name "myJob", group "group1"
.usingJobData("jobSays", "Hello World!")
.usingJobData("myFloatValue", 3.141f)
.build();
而且,在工作中,您可以像这样访问地图:
public class DumbJob implements Job {
public DumbJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException
{
JobKey key = context.getJobDetail().getKey();
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String jobSays = dataMap.getString("jobSays");
float myFloatValue = dataMap.getFloat("myFloatValue");
System.err.println("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
}
}
希望对你有帮助!
【讨论】: