自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SpringBoot定時(shí)任務(wù)實(shí)現(xiàn)的兩種方式介紹

開(kāi)發(fā) 架構(gòu)
SpringTask是Spring自帶的輕量級(jí)定時(shí)任務(wù)工具,相比于Quartz使用更加簡(jiǎn)單方便,并且不需要不需要引入其他依賴(lài)即可使用。

 [[408224]]

今天給大家介紹SpringBoot定時(shí)任務(wù)實(shí)現(xiàn)的幾種方式,希望對(duì)大家能有所幫助!

1、SpringTask 用法

框架介紹:SpringTask是Spring自帶的輕量級(jí)定時(shí)任務(wù)工具,相比于Quartz使用更加簡(jiǎn)單方便,并且不需要不需要引入其他依賴(lài)即可使用。今天主要介紹注解的實(shí)現(xiàn)方式:

SpringBoot啟動(dòng)類(lèi)配置 @EnableScheduling 注解

  1. package my.springboot.task; 
  2.  
  3. import org.springframework.boot.SpringApplication; 
  4. import org.springframework.boot.autoconfigure.SpringBootApplication; 
  5. import org.springframework.scheduling.annotation.EnableScheduling; 
  6.  
  7. @SpringBootApplication 
  8. @EnableScheduling  
  9. public class TaskApplication { 
  10.  
  11. public static void main(String[] args) { 
  12.         SpringApplication.run(TaskApplication.class, args); 
  13.     } 
  14.  

創(chuàng)建測(cè)試類(lèi) TaskTest.java

  1. package my.springboot.task.controller; 
  2.  
  3. import cn.hutool.core.date.DateUtil; 
  4. import org.springframework.scheduling.annotation.Scheduled; 
  5. import org.springframework.stereotype.Component; 
  6.  
  7. import java.util.Date
  8. @Component 
  9. public class TaskTest { 
  10. //每隔20秒執(zhí)行一次 
  11. @Scheduled(cron = "0/20 * * * * ?"
  12. public void Test() 
  13.     { 
  14.         System.out.println("執(zhí)行測(cè)試"+ DateUtil.now()); 
  15.     } 

然后啟動(dòng)項(xiàng)目就可以了,運(yùn)行效果如下:

2、Quartz用法 介紹

添加依賴(lài)

  1. <dependency> 
  2. <groupId>org.springframework.boot</groupId> 
  3. <artifactId>spring-boot-starter-quartz</artifactId> 
  4. </dependency> 

 

添加測(cè)試類(lèi) QuartzJobTest.java

  1. package my.springboot.mybatis.controller; 
  2.  
  3. import cn.hutool.core.date.DateUtil; 
  4. import org.quartz.JobExecutionContext; 
  5. import org.quartz.JobExecutionException; 
  6. import org.springframework.scheduling.quartz.QuartzJobBean; 
  7.  
  8. public class QuartzJobTest extends QuartzJobBean { 
  9. @Override 
  10.     protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { 
  11.         String userName = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("userName"); 
  12.         String type = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("type"); 
  13.         System.out.println("測(cè)試類(lèi)型:"+type+",你好,"+userName+",當(dāng)前執(zhí)行時(shí)間為:"+ DateUtil.now()); 
  14.     } 

添加配置類(lèi) QuartzConfig.java

  1. package my.springboot.mybatis.common; 
  2.  
  3. import my.springboot.mybatis.controller.QuartzJobTest; 
  4. import my.springboot.mybatis.controller.TaskTest; 
  5. import org.quartz.*; 
  6. import org.springframework.context.annotation.Bean; 
  7. import org.springframework.context.annotation.Configuration; 
  8.  
  9. @Configuration 
  10. public class QuartzConfig { 
  11.  
  12.  
  13. @Bean 
  14.     public JobDetail testJobDetail() { 
  15.         JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class) 
  16.                 .usingJobData("type","Trigger"
  17.                 .usingJobData("userName""小明") //設(shè)置參數(shù)(鍵值對(duì)) 
  18.                 .storeDurably() 
  19.                 .build(); 
  20. return jobDetail; 
  21.     } 
  22. /** 
  23.      * 定時(shí)任務(wù)1: 
  24.      * Trigger觸發(fā)器使用 
  25.      */ 
  26.     @Bean 
  27.     public Trigger testJobTrigger() { 
  28. //每隔5秒執(zhí)行一次 
  29.         CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/15 * * * * ?"); 
  30. //創(chuàng)建觸發(fā)器 
  31.         Trigger trigger = TriggerBuilder.newTrigger() 
  32.                 .forJob(testJobDetail())//關(guān)聯(lián)上述的JobDetail 
  33.                 .withSchedule(cronScheduleBuilder) 
  34.                 .build(); 
  35. return trigger
  36.     } 
  37.  
  38. @Bean 
  39.     public JobDetail testSampleJobDetail() { 
  40.         JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class) 
  41.                 .usingJobData("type","SimpleTrigger"
  42.                 .usingJobData("userName""小王")               .storeDurably()  
  43.                 .build(); 
  44. return jobDetail; 
  45.     } 
  46.  
  47. /** 
  48.      * 定時(shí)任務(wù)2: 
  49.      * Simple觸發(fā)器使用 
  50.      * */ 
  51.     @Bean 
  52.     public SimpleTrigger testSimpleTrigger(){ 
  53.         SimpleScheduleBuilder ssb = SimpleScheduleBuilder.simpleSchedule() 
  54.                 .withIntervalInSeconds(10).repeatForever(); 
  55.         SimpleTrigger sTrigger = TriggerBuilder.newTrigger() 
  56.                 .forJob(testSampleJobDetail())// 
  57.                 .withSchedule(ssb).build(); 
  58. return sTrigger; 
  59.     } 
  60.  
  61.  

運(yùn)行效果

3、常用Cron表達(dá)式

  1. “0 0 13,16,17 * * ?” 每天下午1、4、7點(diǎn)執(zhí)行一次 
  2. “0 0 10 ? * WED” 表示每周三中午10點(diǎn)執(zhí)行一次 
  3. “0 0 10 * * ?” 每天中午10點(diǎn)執(zhí)行一次 
  4. “0 15 13 * * ?” 每天下午1:15執(zhí)行一次 
  5. “0 15 10 * * ? " 每天上午10:15執(zhí)行一次 
  6. “0 30 10 * * ? 2021” 2021年的每天上午10:30執(zhí)行一次 
  7. “0 10 9 ? * MON-FRI” 周一至周五的上午9:10執(zhí)行一次 
  8. “0 15 10 15 * ?” 每月15日上午10:15執(zhí)行一次 
  9. “0 15 10 L * ?” 每月最后一日的上午10:15執(zhí)行一次 
  10. “0 15 10 ? * 6L” 每月的最后一個(gè)星期五上午10:15執(zhí)行一次 
  11. "/5 * * * * ?” 每隔5秒執(zhí)行一次 
  12. “0 */1 * * * ?” 每隔1分鐘執(zhí)行一次 
  13. “0 0 23 * * ?” 每天23點(diǎn)執(zhí)行一次 
  14. “0 0 1 * * ?” 每天凌晨1點(diǎn)執(zhí)行一次 
  15. “0 0 1 1 * ?” 每月1號(hào)凌晨1點(diǎn)執(zhí)行一次 
  16. “0 0 23 L * ?” 每月最后一天23點(diǎn)執(zhí)行一次 
  17. “0 0 1 ? * L” 每周星期天凌晨1點(diǎn)實(shí)行一次 
  18. “0 26,29,33 * * * ?” 在26分、29分、33分執(zhí)行一次 
  19. “0 0 0,13,18,21 * * ?” 每天的0點(diǎn)、13點(diǎn)、18點(diǎn)、21點(diǎn)都執(zhí)行一次 

 本文轉(zhuǎn)載自微信公眾號(hào)「IT技術(shù)分享社區(qū)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系IT技術(shù)分享社區(qū)公眾號(hào)。

個(gè)人博客網(wǎng)站:https://programmerblog.xyz

 

責(zé)任編輯:武曉燕 來(lái)源: IT技術(shù)分享社區(qū)
相關(guān)推薦

2024-09-20 05:49:04

SpringBoot后端

2024-12-27 08:24:55

2020-12-21 07:31:23

實(shí)現(xiàn)單機(jī)JDK

2024-05-31 13:07:29

.NET Core定時(shí)任務(wù)編程

2009-06-15 15:02:48

Spring定時(shí)器

2019-02-20 15:52:50

技術(shù)開(kāi)發(fā)代碼

2024-01-22 08:53:00

策略任務(wù)RocketMQ

2021-08-05 07:28:25

Java實(shí)現(xiàn)方式

2024-01-31 08:38:57

Python定時(shí)任務(wù)函數(shù)

2024-02-26 11:12:33

定時(shí)任務(wù)線程

2021-11-22 12:35:40

Python命令定時(shí)任務(wù)

2019-12-25 15:10:00

MySQL事件數(shù)據(jù)庫(kù)

2025-01-08 09:55:37

Spring接口數(shù)據(jù)庫(kù)

2024-10-15 16:41:35

2025-02-24 16:00:00

SpringBoot定時(shí)任務(wù)開(kāi)發(fā)

2010-07-14 10:30:26

Perl多線程

2025-03-12 09:54:02

2021-12-08 10:47:35

RabbitMQ 實(shí)現(xiàn)延遲

2024-02-28 09:54:07

線程池配置

2016-12-27 19:29:14

Linux命令定時(shí)任務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)