Quartz:向Job传递数据

JobDetail job1 = newJob(MyJob.class).withIdentity("job1", "group1").build();

newJob方法其实返回一个JobBuilder实例,通过调用JobBuilder的方法配置任务属性,最后调用build方法返回构造的任务实例(任务实例实现了JobDetail)。

每个任务其实都是一个实现了JobDetail接口的实例,这个实例每次执行都会根据当初构造它的JobBuilder配置的Class对象构造出一个新的实例。

JobDetail接口有个getJobDataMap方法能返回一个JobDataMap对象,这个对象实现了Map接口。可以用来传递信息给Job

JobDataMap map = job1.getJobDataMap();
map.put("key", "value");

Job中如何拿到这些数据:通过Job接口的execute方法参数能获取到,若Job.execute(JobExecutionContext context){}则:

JobDataMap map = context.getJobDetail().getJobDataMap();
System.out.println(map.get("key"))

JobDetail只有一个,而实现Job接口的带execute方法的类的实例却有多个,具体也就是每次任务执行的时候会构造一个。

posted @ 2018-12-08 20:13  xuejianbest  阅读(1307)  评论(0编辑  收藏  举报