概述
Quartz是一款任务调度框架,简洁,简单,我们来看它的一个简单的入门案例
demo
需要说明的一点是,调度类Scheduler可以从StdSchedulerFactory中获取,也可以在SpringBoot中用@Autowired注解获得,在用SpringBoot的开发框架中,推荐使用@Autowired直接注入获得,比较方便,也是官方推荐
@RestController
@RequestMapping("/quartzController")
public class QuartzTestController {
@Autowired
private Scheduler scheduler;
@PostMapping("/quartz")
public void quartz() throws SchedulerException {
/*SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler scheduler = schedFact.getScheduler();*/
scheduler.start();
//定义一个任务Job,传给它一个实现了Job接口的class类
JobDetail job = JobBuilder.newJob(CompleteQuartz.class)
/**添加参数,在Job实现类中,可以通过jobExecutionContext.getJobDetail().getJobDataMap().get("age")获取值*/
.usingJobData("name","zy")
.usingJobData("age",23)
.withIdentity("myJob", "group1")
.build();//执行
//定义一个触发器,并且设置触发器每40秒出发一次
Trigger trigger = newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
//在定时器中指定任务和出发器
scheduler.scheduleJob(job, trigger);
}
}
Job实现类
public class CompleteQuartz implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.err.println(jobExecutionContext.getJobDetail().getJobDataMap().get("name"));
System.err.println(jobExecutionContext.getJobDetail().getJobDataMap().get("age"));
System.err.println("定时任务执行,当前时间:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
}
}
我们来看结果
定时任务执行完成
版权声明:本文为weixin_40598838原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。