1、在springboot2.x中引入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
2、使用數據庫的需要指定,spring.quartz.job-store-type=jdbc
數據庫默認使用spring.datasource.*的配置,
表結構在jar包里面org\quartz-scheduler\quartz\2.3.1\quartz-2.3.1.jar!\org\quartz\impl\jdbcjobstore
3、配置工具類兩個方法,一個增加,已刪除,其中scheduler已經自動裝配,可以直接引用
import org.quartz.*;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component
public class QuartzUtil {
@Resource
private Scheduler scheduler;
/**
* 增加一個job
*
* @param jobDetail
* 任務實現類
* @param jobName
* 任務名稱
* @param jobGroupName
* 任務組名
* @param jobTime
* 時間表達式 (這是每隔多少秒為一次任務)
* @param jobTimes
* 運行的次數 (<0:表示不限次數)
*/
public void addJob( JobDetail jobDetail, String jobName, String jobGroupName, int jobTime,
int jobTimes) {
try {
// 使用simpleTrigger規則
Trigger trigger = null;
if (jobTimes < 0) {
trigger = TriggerBuilder.newTrigger().withIdentity(jobName, jobGroupName)
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1).withIntervalInSeconds(jobTime))
.startNow().build();
} else {
trigger = TriggerBuilder
.newTrigger().withIdentity(jobName, jobGroupName).withSchedule(SimpleScheduleBuilder
.repeatSecondlyForever(1).withIntervalInSeconds(jobTime).withRepeatCount(jobTimes))
.startNow().build();
}
scheduler.scheduleJob(jobDetail, trigger);
} catch (SchedulerException e) {
e.printStackTrace();
}
}
/**
* 刪除任務一個job
*
* @param jobName
* 任務名稱
* @param jobGroupName
* 任務組名
*/
public void deleteJob(String jobName, String jobGroupName) {
try {
scheduler.deleteJob(new JobKey(jobName, jobGroupName));
} catch (Exception e) {
e.printStackTrace();
}
}
}
4、添加任務類,要繼承QuartzJobBean類,這樣就能在任務類中注入容器中bean
@Slf4j
public class SendEmailJob extends QuartzJobBean {
/**
* @Reaource
* private XXXXXXMapper xxxxxMapper
**/
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("定時任務");
}
}
5、引用
JobDetail jobDetail=JobBuilder.newJob(SendEmailJob.class).build();
quartzUtil.addJob(jobDetail,"","",100,-1);
