pom依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
我的boot版本是1.5.9
编写quartz工具类
public class SchedulerUtil {
private static Scheduler scheduler;
public static synchronized Scheduler getScheduler() throws SchedulerException {
if (scheduler==null) {
SchedulerFactory sf = new StdSchedulerFactory();
scheduler = sf.getScheduler();
}
return scheduler;
}
/**
* 创建指定日期参数的定时任务
* @param jobName
* @param jobImpl
* @return
*/
public static String createJob(String jobName, String cronExpression, Class<? extends Job> jobImpl){
String errorMsg = "";
//检查传入参数是否合法
if(StringUtils.isBlank(jobName)){
errorMsg = "传入任务名称为空,创建任务失败";
log.warn(errorMsg);
return errorMsg;
}
if(cronExpression == null){
errorMsg = "传入的时间参数为空,创建任务失败";
log.warn(errorMsg);
return errorMsg;
}
//获取quartz的任务调度器
try {
Scheduler tmpScheduler = getScheduler();
//创建quart的任务信息对象
JobDetail myJob = newJob(jobImpl).withIdentity(jobName, jobName + "Group").build();
//设置触发器
Trigger trigger = createCronTrigger(cronExpression, jobName, jobName + "TriggerGroup");
Date startDate = tmpScheduler.scheduleJob(myJob, trigger);
log.info("任务[" + jobName + "]创建成功,任务定时时间: " + startDate);
startScheduler();
} catch (SchedulerException e) {
log.error("获取任务调度器失败: ", e);
return "获取任务调度器失败";
} catch (ParseException e) {
log.error("解析任务时间参数失败: ", e);
return "解析任务时间参数失败";
}
return null;
}
public static Trigger createCronTrigger(String cronExpression, String triggerName,
String triggerGroup) throws ParseException {
return TriggerBuilder.newTrigger().withIdentity(triggerName,
triggerGroup).withSchedule(
CronScheduleBuilder.cronSchedule(cronExpression)).build();
}
public static void addJob(JobDetail jobDetail, Trigger trigger) throws SchedulerException {
scheduler.scheduleJob(jobDetail, trigger);
}
/**
* 启动默认的调度管理器
* @throws SchedulerException
*/
public static synchronized void startScheduler() throws SchedulerException {
if (!scheduler.isStarted()) {
scheduler.start();
}
}
}
创建springboot启动加载类
@Component
@Order(value = 2)
public class ChandaoBugRunner implements ApplicationRunner {
private static Log logger = LogFactory.getLog(ChandaoBugRunner.class);
@Override
public void run(ApplicationArguments args) throws Exception {
SchedulerUtil.createJob("任务名称","定时时间参数","定时任务类");
//SchedulerUtil.createJob("闹钟定时","cron表达式",checkJob.class);
logger.info("加载任务完成");
}
}
创建定时任务
public class checkJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
logger.info("启动定时任务");
//你需要定时启动的方法。
}
}
启动springboot启动类
启动成功。