日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SpringBoot定時任務(wù)實現(xiàn)的兩種方式介紹

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

1、SpringTask 用法

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

SpringBoot啟動類配置 @EnableScheduling 注解

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

創(chuàng)建測試類 TaskTest.java

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

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

2、Quartz用法 介紹

添加依賴

 
 
 
 
  1. org.springframework.boot
  2. spring-boot-starter-quartz

添加測試類 QuartzJobTest.java

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

添加配置類 QuartzConfig.java

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

運(yùn)行效果

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

 
 
 
 
  1. “0 0 13,16,17 * * ?” 每天下午1、4、7點執(zhí)行一次
  2. “0 0 10 ? * WED” 表示每周三中午10點執(zhí)行一次
  3. “0 0 10 * * ?” 每天中午10點執(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” 每月的最后一個星期五上午10:15執(zhí)行一次
  11. "/5 * * * * ?” 每隔5秒執(zhí)行一次
  12. “0 */1 * * * ?” 每隔1分鐘執(zhí)行一次
  13. “0 0 23 * * ?” 每天23點執(zhí)行一次
  14. “0 0 1 * * ?” 每天凌晨1點執(zhí)行一次
  15. “0 0 1 1 * ?” 每月1號凌晨1點執(zhí)行一次
  16. “0 0 23 L * ?” 每月最后一天23點執(zhí)行一次
  17. “0 0 1 ? * L” 每周星期天凌晨1點實行一次
  18. “0 26,29,33 * * * ?” 在26分、29分、33分執(zhí)行一次
  19. “0 0 0,13,18,21 * * ?” 每天的0點、13點、18點、21點都執(zhí)行一次

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

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


網(wǎng)站欄目:SpringBoot定時任務(wù)實現(xiàn)的兩種方式介紹
文章鏈接:http://www.5511xx.com/article/cdsosis.html