1.导入Quartz需要的pom包
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>
2. 定时任务工具类 工厂模式调度,去创建一个定时任务
public class HelloScheduler { public static void main(String[] args) throws SchedulerException { //创建jobDetail绑定HelloJob JobDetail jobDetail = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob","myGroup").build(); //创建触发器trigger每个2秒执行一次,一直执行 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("111", "myGroup").startNow() //.withSchedule(SimpleScheduleBuilder.simpleSchedule() //这里是指每分钟执行一次 withIntervalInMinutes(1).repeatForever()) 定时几点钟 //这里cron表达式是说周一10.27分 .withSchedule(CronScheduleBuilder.cronSchedule("0 27 10 ? * MON-FRI")) .build(); //创建调度者工厂 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); //创建调度者 Scheduler scheduler = schedulerFactory.getScheduler(); //启动调度器 scheduler.start(); //设置调度任务 scheduler.scheduleJob(jobDetail, trigger); } }
3.业务逻辑类 只需要去实现JOB类
public class HelloJob implements Job { private static final SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void execute(JobExecutionContext context) throws JobExecutionException { Date now = new Date(); String currentTime = sdf.format(now); System.err.println(context); System.err.println("执行时间为:"+currentTime); }
4.例如我们项目中的业务是会员生日给会员发送生日祝福消息,我们可以用定时任务每天去查当天过生日的会员集合,然后去发送消息
5.cron表达式可以使我们的定时更加灵活推荐去看在线Cron表达式生成器
网址为:在线Cron表达式生成器通过这个生成器,您可以在线生成任务调度比如Quartz的Cron表达式,对Quartz Cron 表达式的可视化双向解析和生成.https://cron.qqe2.com/