您现在的位置是:亿华云 > 系统运维

SpringBoot定时任务实现的两种方式介绍

亿华云2025-10-04 00:21:20【系统运维】3人已围观

简介今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助!1、SpringTask 用法框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quartz使

 

今天给大家介绍SpringBoot定时任务实现的定时的两几种方式,希望对大家能有所帮助!

1、任务SpringTask 用法

框架介绍:SpringTask是实现式介绍Spring自带的轻量级定时任务工具,相比于Quartz使用更加简单方便,种方并且不需要不需要引入其他依赖即可使用。定时的两今天主要介绍注解的任务实现方式:

SpringBoot启动类配置 @EnableScheduling 注解

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);     } } 

创建测试类 TaskTest.java

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());     } } 

然后启动项目就可以了,云服务器运行效果如下:

2、实现式介绍Quartz用法 介绍

添加依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> 

添加测试类 QuartzJobTest.java

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());     } } 

添加配置类 QuartzConfig.java

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;     } } 

运行效果

3、常用Cron表达式

“0 0 13,实现式介绍16,17 * * ?” 每天下午1、4、种方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点都执行一次 

 本文转载自微信公众号「IT技术分享社区」,可以通过以下二维码关注。转载本文请联系IT技术分享社区公众号。香港云服务器

个人博客网站:https://programmerblog.xyz

很赞哦!(3)