Spring Boot 中啟用定時任務的操作方法
添加 @EnableScheduling 注解
可以添加在 Application 類上
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}定義定時任務類和方法
定時任務類要注冊為Spring IoC 容器的 Bean,或者通過 @Bean 將某個方法的返回值(返回值為定時任務類對象)注冊為 Spring IoC 的Bean。
package com.cmcc.nlpt.sitemessage.task;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTask {
/**
* 每日0點執(zhí)行
*/
@Scheduled (cron = "0 0 0 * * ?")
public void doCronTask() {
}
/**
* 本次任務結束到下次任務開始的時間間隔為5秒
*/
@Scheduled (fixedDelay = 5000)
public void doFixedDelayTask() {
}
/**
* 兩次任務開始時間間間隔為5秒
*/
@Scheduled(fixedRate = 5000)
public void doFixedRateTask() {
}
/**
* 第一次任務啟動延時1秒,后續(xù)任務結束到下次任務開始的時間間隔為5秒
*/
@Scheduled(initialDelay = 1000, fixedDelay = 5000)
public void doInitialDelayTask() {
}
}通過配置項控制定時任務是否開啟
方法一 @ConditionalOnProperty
此方法是控制任務類是否注冊為 Spring IoC 的 Bean,可以控制上述所有類型的定時任務是否注冊。
# enabled 配置為 false 時定時任務就不會開啟 scheduled-task: enabled: true
@Component
@ConditionalOnProperty(name = "scheduled-task.enabled", havingValue = "true")
public class ScheduledTask {
/**
* 每日0點執(zhí)行
*/
@Scheduled (cron = "0 0 0 * * ?")
public void doCronTask() {
}
/**
* 本次任務結束到下次任務開始的時間間隔為5秒
*/
@Scheduled (fixedDelay = 5000)
public void doFixedDelayTask() {
}
/**
* 兩次任務開始時間間間隔為5秒
*/
@Scheduled(fixedRate = 5000)
public void doFixedRateTask() {
}
/**
* 第一次任務啟動延時1秒,后續(xù)任務結束到下次任務開始的時間間隔為5秒
*/
@Scheduled(initialDelay = 1000, fixedDelay = 5000)
public void doInitialDelayTask() {
}
}方法二 Boolean 標志位
使用此方法定時任務還是會被調度執(zhí)行,只是在任務執(zhí)行時什么都不做,也可以控制上述所有類型的定時任務。
scheduled-task: enabled: true
@Component
@ConditionalOnProperty(name = "scheduled-task.enabled", havingValue = "true")
public class ScheduledTask {
@Value("${scheduled-task.enabled}")
private Boolean taskEnabled;
@Scheduled (fixedDelay = 5000)
public void doFixedDelayTask() {
if (!taskEnabled) {
return;
}
System.out.println("start to doFixedDelayTask");
}
}使用"-"使 cron 定時任務關閉
此方法只適用于 cron 類型的定時任務,不適用于其它類型的定時任務。
注意:yml 文件中配置 - 時要加上雙引號或單引號,否則會報錯。
關閉 cron 定時任務的配置:
scheduled-task: cron: "-"
開始 cron 定時任務的配置,將 cron 表達式配置上即可:
scheduled-task: cron: 0 0 0 * * ?
@Component
public class ScheduledTask {
/**
* 每日0點執(zhí)行
*/
@Scheduled (cron = "${scheduled-task.cron}")
public void doCronTask() {
}
}參考資料
- Michael Pratt:Conditionally Enable Scheduled Jobs in Spring
- tan日拱一兵:@ConditionalOn…注解,條件組合你知道嗎?
- 江南一點雨:Spring Boot 中實現(xiàn)定時任務的兩種方式!
到此這篇關于如何在 Spring Boot 中啟用定時任務的文章就介紹到這了,更多相關Spring Boot啟用定時任務內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 如何解決SpringBoot定時任務報錯Unexpected error occurred in scheduled task問題
- SpringBoot使用@Scheduled實現(xiàn)定時任務的并行執(zhí)行
- springboot定時任務SchedulingConfigurer異步多線程實現(xiàn)方式
- xxl-job定時任務配置應用及添加到springboot項目中實現(xiàn)動態(tài)API調用
- SpringBoot中實現(xiàn)定時任務的4種方式詳解
- SpringBoot集成xxl-job實現(xiàn)超牛的定時任務的步驟詳解
- SpringBoot實現(xiàn)設置動態(tài)定時任務的方法詳解
- SpringBoot中實現(xiàn)定時任務的幾種方式
相關文章
Java實現(xiàn)FTP文件的上傳和下載功能的實例代碼
FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,而中文簡稱為“文傳協(xié)議”。接下來通過本文給大家實例講解Java實現(xiàn)FTP文件的上傳和下載功能,需要的的朋友一起看看吧2016-11-11
Spring Shell 命令行實現(xiàn)交互式Shell應用開發(fā)
本文主要介紹了Spring Shell 命令行實現(xiàn)交互式Shell應用開發(fā),能夠幫助開發(fā)者快速構建功能豐富的命令行應用程序,具有一定的參考價值,感興趣的可以了解一下2025-04-04
Spring Boot利用@Async異步調用:使用Future及定義超時詳解
這篇文章主要給大家介紹了關于Spring Boot利用@Async異步調用:使用Future及定義超時的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring boot具有一定的參考學習價值,需要的朋友可以參考下2018-05-05
springboot+redis實現(xiàn)微博熱搜排行榜的示例代碼
本文主要介紹了springboot+redis實現(xiàn)微博熱搜排行榜的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05

