SpringBoot中使用Quartz設置定時任務的實例詳解
更新時間:2023年12月01日 09:50:06 作者:鱸魚不會起名鴨
Quartz是OpenSymphony開源組織在任務調度領域的一個開源項目,完全基于 Java 實現,本文小編給大家介紹了SpringBoot中如何使用Quartz設置定時任務,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下
基礎使用
Quartz 的核心類有以下三部分:
- 任務 Job : 需要實現的任務類,實現
execute()
方法,執(zhí)行后完成任務。 - 觸發(fā)器 Trigger : 包括
SimpleTrigger
和CronTrigger
。 - 調度器 Scheduler : 任務調度器,負責基于
Trigger
觸發(fā)器,來執(zhí)行 Job任務。
添加依賴
<!-- 核心包 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> <!-- 工具包 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.3.0</version> </dependency>
demo
QuartzConfig類
這個類用來進行任務描述,進行定時執(zhí)行并將對應的執(zhí)行邏輯類進行綁定
import org.quartz.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 定義任務描述和具體的執(zhí)行時間 */ @Configuration public class QuartzConfig { @Bean public JobDetail jobDetail() { //指定任務描述具體的實現類 return JobBuilder.newJob(IDCardWarningJob.class) // 指定任務的名稱 .withIdentity("IDCardWarningJob") // 任務描述 .withDescription("任務描述:身份預警更新表") // 每次任務執(zhí)行后進行存儲 .storeDurably() .build(); } @Bean public Trigger trigger() { //創(chuàng)建觸發(fā)器 return TriggerBuilder.newTrigger() // 綁定工作任務 .forJob(jobDetail()) // .withSchedule(CronScheduleBuilder.dailyAtHourAndMinute(1, 0)) // 設置每天凌晨1點觸發(fā)一次任務 .withSchedule(CronScheduleBuilder.cronSchedule("0 0 1 * * ?")) // 設置每天凌晨1點觸發(fā)一次任務 .build(); } }
demoJob類
這個類負責定時任務的邏輯處理(execute方法中寫代碼邏輯)
import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; import com.iknight.cost.service.IdentityWarningService; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; public class IDCardWarningJob implements Job { private static final Log logger = LogFactory.getLog(IDCardWarningJob.class); @Autowired private IdentityWarningService service; public void setClaimPostServiceImpl(IdentityWarningService service) { this.service = service; } @Override public void execute(JobExecutionContext context) throws JobExecutionException { service.updateDate(); } }
關于cron表達式可以跳轉這個連接->表達式生成器
以上就是SpringBoot中使用Quartz設置定時任務的實例詳解的詳細內容,更多關于SpringBoot Quartz定時任務的資料請關注腳本之家其它相關文章!
相關文章
Java核心編程之文件隨機讀寫類RandomAccessFile詳解
這篇文章主要為大家詳細介紹了Java核心編程之文件隨機讀寫類RandomAccessFile,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08springboot項目編譯提示無效的源發(fā)行版17解決辦法
這篇文章主要給大家介紹了關于springboot項目編譯提示無效的源發(fā)行版17解決辦法,這個錯誤意味著你的Spring Boot項目正在使用Java 17這個版本,但是你的項目中未配置正確的Java版本,需要的朋友可以參考下2023-06-06spring一個項目多個模塊聚合打包問題解決方案(最新推薦)
最近遇到個需求,針對后端解耦模塊較多的項目,想在云端啟動時簡潔些只啟動一個jar文件的情景,本文重點給大家介紹spring一個項目多個模塊聚合打包問題解決方案,感興趣的朋友一起看看吧2023-09-09Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(條件隊列)
這篇文章主要為大家詳細介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02