JobDataMap 是为了方便存入和得到对象的一个对象,使用方法是,先在JobDetial 或者 Trigger 中添加参数,然后在对应的Job 中便可以
得到添加的参数
//绑定job到jobdetail 上
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "group1") //唯一标记符
.usingJobData("name", "ldh") // 添加参数
.usingJobData("age", 24) // 添加参数
.build();
jobDetail.getJobDataMap().put("name", "zxc");
//创建一个最简单的触发器
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1") //唯一标记符
.withSchedule(SimpleScheduleBuilder.simpleSchedule() //创建一个简单的调度器
.withIntervalInSeconds(2000) // 每2秒执行一次
.repeatForever()) // 永远重复执行
.usingJobData("name", "zxc") // 添加参数
.usingJobData("inter", "桌球") // 添加参数
.build();
在对应的Job 里面便可以访问到这些数据
package com.quartz.test.hello;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 任务类,每两秒执行一次hello world
* @author 星驰太帅了
*
*/
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap detailMap = context.getJobDetail().getJobDataMap();
JobDataMap triggerMap = context.getTrigger().getJobDataMap();
System.out.println(detailMap.get("name"));
System.out.println(detailMap.get("age"));
System.out.println(triggerMap.get("name"));
System.out.println(triggerMap.get("inter"));
//也可以直接获取到两者合并的map
JobDataMap mergeMap = context.getMergedJobDataMap();
System.out.println(mergeMap.get("age"));
System.out.println(mergeMap.get("name"));
System.out.println(mergeMap.get("inter"));
//如果key有重复的,优先获取 trigger里面的值
}
}
第二种访问的方法,是在job 类中定义对应的key属性,便可以访问得到
package com.quartz.test.hello;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 任务类,每两秒执行一次hello world
* @author 星驰太帅了
*
*/
public class HelloJob implements Job{
private String name;
private Integer age;
private String inter;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getInter() {
return inter;
}
public void setInter(String inter) {
this.inter = inter;
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println(name);
System.out.println(age);
System.out.println(inter);
}
}
JobDataMap 是为了方便存入和得到对象的一个对象,使用方法是,先在JobDetial 或者 Trigger 中添加参数,然后在对应的Job 中便可以
得到添加的参数
//绑定job到jobdetail 上
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "group1") //唯一标记符
.usingJobData("name", "ldh") // 添加参数
.usingJobData("age", 24) // 添加参数
.build();
jobDetail.getJobDataMap().put("name", "zxc");
//创建一个最简单的触发器
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1") //唯一标记符
.withSchedule(SimpleScheduleBuilder.simpleSchedule() //创建一个简单的调度器
.withIntervalInSeconds(2000) // 每2秒执行一次
.repeatForever()) // 永远重复执行
.usingJobData("name", "zxc") // 添加参数
.usingJobData("inter", "桌球") // 添加参数
.build();
package com.quartz.test.hello;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 任务类,每两秒执行一次hello world
* @author 星驰太帅了
*
*/
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap detailMap = context.getJobDetail().getJobDataMap();
JobDataMap triggerMap = context.getTrigger().getJobDataMap();
System.out.println(detailMap.get("name"));
System.out.println(detailMap.get("age"));
System.out.println(triggerMap.get("name"));
System.out.println(triggerMap.get("inter"));
//也可以直接获取到两者合并的map
JobDataMap mergeMap = context.getMergedJobDataMap();
System.out.println(mergeMap.get("age"));
System.out.println(mergeMap.get("name"));
System.out.println(mergeMap.get("inter"));
//如果key有重复的,优先获取 trigger里面的值
}
}
package com.quartz.test.hello;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 任务类,每两秒执行一次hello world
* @author 星驰太帅了
*
*/
public class HelloJob implements Job{
private String name;
private Integer age;
private String inter;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getInter() {
return inter;
}
public void setInter(String inter) {
this.inter = inter;
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println(name);
System.out.println(age);
System.out.println(inter);
}
}