首页>>后端>>SpringBoot->Spring boot定时任务的两种实现方式

Spring boot定时任务的两种实现方式

时间:2023-11-29 本站 点击:1

基于注解实现静态简易定时任务

集成 Quartz 实现动态定时任务

前言

先理一理定时任务

定时任务的本质,有三大步

1. Job:要执行的任务,比如定时传输文件,定时更新某些数据,等等操作。

2. Trigger:Job 的执行规则,比如什么时候执行,执行间隔,执行次数,等等规则。

3. Scheduler:有了Job,有了Trigger,但 用哪个Trigger执行哪个Job?这时候就轮到Scheduler登场了

一、基于注解实现静态简易定时任务

直接上代码,这个比较简单,主要关注里面的 cron 表达式,详细语法可点击这里

@Configuration@EnableSchedulingpublicclassStaticScheduleTask{@Scheduled(cron="0/5****?")//每隔5秒执行一次publicvoidconfigurationTask(){System.out.println("执行定时任务="+LocalDateTime.now());getData();}publicstaticvoidgetData(){Map<String,Object>map=newHashMap<>();map.put("001","zhangsan");map.put("002","lisi");System.out.println(map);}

二、集成 Quartz 实现动态定时任务

上代码

/***@DescriptionJob定时任务要完成的工作*/publicclassMyJobimplementsJob{@Overridepublicvoidexecute(JobExecutionContextjobExecutionContext){System.out.println("正在执行Job"+LocalDateTime.now());}}

publicclassMyScheduler{publicstaticvoidmain(String[]args)throwsSchedulerException{//1、创建调度器SchedulerSchedulerFactoryschedulerFactory=newStdSchedulerFactory();Schedulerscheduler=schedulerFactory.getScheduler();//2、创建JobDetail实例,并与MyJob类绑定(Job执行内容)JobDetailjobDetail=JobBuilder.newJob(MyJob.class).usingJobData("jobDetail1","这个Job用来测试的").withIdentity("job1","group1").build();//3、构建Trigger实例,每隔1s执行一次CronTriggercronTrigger=TriggerBuilder.newTrigger().withIdentity("trigger1","triggerGroup1").usingJobData("trigger1","这是jobDetail1的trigger").startNow()//立即生效.withSchedule(CronScheduleBuilder.cronSchedule("0/5****?")).build();//4、执行scheduler.scheduleJob(jobDetail,cronTrigger);System.out.println("--------schedulerstart!------------");scheduler.start();System.out.println("--------schedulershutdown!------------");}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/SpringBoot/361.html