springboot整合quartz定时调度

mac2025-06-15  17

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启动类

启动成功。

最新回复(0)