JobDataMap屬于JobDetail的一部分
可以在建構JobDataMap時傳遞參數
取出參數2種形式:
第1種:可以從execute方法的上下文中取出參數
第2種:在Job類中,定義參數名稱,完成getset方法
推薦使用第2種+lombok
添加參數
//建立JobDetail
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
//唯一辨別
.withIdentity("jobDetail1", "group1")
//添加參數通過usingJobData方法,傳遞給job
.usingJobData("name","yx")
.build();
第1種:可以從execute方法的上下文中取出參數
package com.gblfy.job;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.time.LocalTime;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
LocalTime localTime = LocalTime.now();
/*
1.從上下文中先擷取getJobDetail
2.再從getJobDetail中擷取JobDataMap
3.最後,從JobDataMap中,根據key擷取對應屬性的值
*/
JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
String name = jobDataMap.getString("name");
System.out.println("hello " + name + "我正在執行" + localTime);
}
}
第2種:在Job類中,定義參數名稱,完成getset方法
package com.gblfy.job;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.time.LocalTime;
public class MyJob implements Job {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
LocalTime localTime = LocalTime.now();
System.out.println("hello " + name + "我正在執行" + localTime);
}
}
為了減少代碼,建議引入lombok
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
剛才的代碼,簡化為
package com.gblfy.job;
import lombok.Getter;
import lombok.Setter;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.time.LocalTime;
public class MyJob implements Job {
@Getter@Setter
private String name;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
LocalTime localTime = LocalTime.now();
System.out.println("hello " + name + "我正在執行" + localTime);
}
}