當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot定时任务实现的两种方式介绍
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot定时任务实现的两种方式介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?? ? ? ?? ? ? ??
今天給大家介紹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 { @Overrideprotected 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 {@Beanpublic JobDetail testJobDetail() {JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class).usingJobData("type","Trigger").usingJobData("userName", "小明") //設置參數(鍵值對).storeDurably().build(); return jobDetail;} /*** 定時任務1:* Trigger觸發器使用*/@Beanpublic Trigger testJobTrigger() { //每隔5秒執行一次CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/15 * * * * ?"); //創建觸發器Trigger trigger = TriggerBuilder.newTrigger().forJob(testJobDetail())//關聯上述的JobDetail.withSchedule(cronScheduleBuilder).build(); return trigger;}@Beanpublic JobDetail testSampleJobDetail() {JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class).usingJobData("type","SimpleTrigger").usingJobData("userName", "小王") .storeDurably() .build(); return jobDetail;}/*** 定時任務2:* Simple觸發器使用* */@Beanpublic 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技術分享社區
個人博客網站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識
總結
以上是生活随笔為你收集整理的SpringBoot定时任务实现的两种方式介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中南大学数字中南、电信校园网无法弹出验证
- 下一篇: 后端:50 个 经典 Spring 面试