今天给你们介绍SpringBoot定时任务实现的几种方式,但愿对你们能有所帮助!java
框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quartz使用更加简单方便,而且不须要不须要引入其余依赖便可使用。今天主要介绍注解的实现方式:程序员
package my.springboot.task; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class TaskApplication { public static void main(String[] args) { SpringApplication.run(TaskApplication.class, args); } }
package my.springboot.task.controller; import cn.hutool.core.date.DateUtil; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; @Component public class TaskTest { //每隔20秒执行一次 @Scheduled(cron = "0/20 * * * * ?") public void Test() { System.out.println("执行测试"+ DateUtil.now()); } }
而后启动项目就能够了,运行效果以下:spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
package my.springboot.mybatis.controller; import cn.hutool.core.date.DateUtil; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class QuartzJobTest extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { String userName = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("userName"); String type = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("type"); System.out.println("测试类型:"+type+",你好,"+userName+",当前执行时间为:"+ DateUtil.now()); } }
package my.springboot.mybatis.common; import my.springboot.mybatis.controller.QuartzJobTest; import my.springboot.mybatis.controller.TaskTest; import org.quartz.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class QuartzConfig { @Bean public JobDetail testJobDetail() { JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class) .usingJobData("type","Trigger") .usingJobData("userName", "小明") //设置参数(键值对) .storeDurably() .build(); return jobDetail; } /** * 定时任务1: * Trigger触发器使用 */ @Bean public Trigger testJobTrigger() { //每隔5秒执行一次 CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/15 * * * * ?"); //建立触发器 Trigger trigger = TriggerBuilder.newTrigger() .forJob(testJobDetail())//关联上述的JobDetail .withSchedule(cronScheduleBuilder) .build(); return trigger; } @Bean public JobDetail testSampleJobDetail() { JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class) .usingJobData("type","SimpleTrigger") .usingJobData("userName", "小王") .storeDurably() .build(); return jobDetail; } /** * 定时任务2: * Simple触发器使用 * */ @Bean public SimpleTrigger testSimpleTrigger(){ SimpleScheduleBuilder ssb = SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10).repeatForever(); SimpleTrigger sTrigger = TriggerBuilder.newTrigger() .forJob(testSampleJobDetail())// .withSchedule(ssb).build(); return sTrigger; } }
“0 0 13,16,17 * * ?” 天天下午一、四、7点执行一次 “0 0 10 ? * WED” 表示每周三中午10点执行一次 “0 0 10 * * ?” 天天中午10点执行一次 “0 15 13 * * ?” 天天下午1:15执行一次 “0 15 10 * * ? " 天天上午10:15执行一次 “0 30 10 * * ? 2021” 2021年的天天上午10:30执行一次 “0 10 9 ? * MON-FRI” 周一至周五的上午9:10执行一次 “0 15 10 15 * ?” 每个月15日上午10:15执行一次 “0 15 10 L * ?” 每个月最后一日的上午10:15执行一次 “0 15 10 ? * 6L” 每个月的最后一个星期五上午10:15执行一次 "/5 * * * * ?” 每隔5秒执行一次 “0 */1 * * * ?” 每隔1分钟执行一次 “0 0 23 * * ?” 天天23点执行一次 “0 0 1 * * ?” 天天凌晨1点执行一次 “0 0 1 1 * ?” 每个月1号凌晨1点执行一次 “0 0 23 L * ?” 每个月最后一天23点执行一次 “0 0 1 ? * L” 每周星期天凌晨1点实行一次 “0 26,29,33 * * * ?” 在26分、29分、33分执行一次 “0 0 0,13,18,21 * * ?” 天天的0点、13点、18点、21点都执行一次
文章推荐程序员效率:画流程图经常使用的工具程序员效率:整理经常使用的在线笔记软件远程办公:经常使用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识typescript