pom
<!-- 定时器 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
util
import com.cei.xyd_cz.web.TestTimer;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class TestScheduler implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
appStart();
}
/**
* 定时任务调度器,具体给定执行的时间和频率设置
*
* @throws SchedulerException
* @throws InterruptedException
*/
public void appStart() throws SchedulerException, InterruptedException {
// 1、创建调度器Scheduler
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// 2、创建JobDetail实例,并与PrintWordsJob类绑定(Job执行内容)
JobDetail jobDetail = JobBuilder.newJob(TestTimer.class)
.withIdentity("job1", "group1").build();
// 3、构建Trigger实例,按照cron表达式执行 在线表达式网址:https://cron.qqe2.com/
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "triggerGroup1")
.usingJobData("trigger1", "这是jobDetail1的trigger")
.startNow()//立即生效
.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ? "))
.build();
//4、执行
scheduler.scheduleJob(jobDetail, trigger);
// LoggerUtil.info("--------scheduler start ! ------------");
System.out.println("--------scheduler start ! ------------");
scheduler.start();
//睡眠
/* TimeUnit.MINUTES.sleep(1);
scheduler.shutdown();
System.out.println("--------scheduler shutdown ! ------------");*/
}
}
业务
import com.cei.xyd_cz.util.LoggerUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class TestTimer implements Job {
/**
* 定时器具体要执行的逻辑
* @param jobExecutionContext
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//打印当前的执行时间 例如 2017-11-22 00:00:00
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LoggerUtil.info("定时器测试——现在的时间是:"+ sf.format(date));
}
}