SpringBoot中@Scheduled實現(xiàn)服務(wù)啟動時執(zhí)行一次
說到定時任務(wù),我們應(yīng)該會想起@Scheduled,Quartz以及XXL-JOB,但是有的單體服務(wù)或者小項目,為了方便快捷,可能會直接使用@Scheduled去實現(xiàn)異步任務(wù)。因此,從而延伸出本文的主題需求。
當項目中使用@Scheduled,如何在項目啟動的時候讓指定的異步任務(wù)提前執(zhí)行一次?
一、@Scheduled詳解
@Scheduled注解支持多個參數(shù),用于靈活控制任務(wù)執(zhí)行時間
cron:Cron表達式,可以精準控制秒、分、小時、日、月、周等
- zone:接收一個時區(qū),比如我們一般使用的時區(qū)Asia/Shanghai,該字段我們一般留空。
- fixedDelay:上一次執(zhí)行完畢時間點之后多長時間再執(zhí)行。如@Scheduled(fixedDelay = 5000)
- fixedDelayString:與 fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符,如@Scheduled(fixedDelayString = “5000”)
- fixedRate:上一次開始執(zhí)行時間點之后多長時間再執(zhí)行,如@Scheduled(fixedRate = 5000)
- fixedRateString:與 fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
- initialDelay:第一次延遲多長時間后再執(zhí)行,如第一次延遲1秒后執(zhí)行,之后按fixedRate的規(guī)則每5秒執(zhí)行一次@Scheduled(initialDelay=1000, fixedRate=5000)
- initialDelayString:與 initialDelayString 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
二、邏輯實現(xiàn)
1、創(chuàng)建定時任務(wù)邏輯方法
/** * @Author 碼至終章 * @Version 1.0 */ @Component public class ScheduledTest { @Scheduled(cron = "* 1 * * * ?") public void task1() throws Exception{ System.out.println("task1 執(zhí)行: " + Thread.currentThread() + "-" + DateTime.now()); } }
2、新建一個啟動執(zhí)行類
該類主要在啟動時手動調(diào)用指定的任務(wù)方法
/** * @Author 碼至終章 * @Version 1.0 */ @Component public class StartupTasks { private final ScheduledTest scheduledTasks; public StartupTasks(ScheduledTest scheduledTasks) { this.scheduledTasks = scheduledTasks; } @PostConstruct public void startUp() { try { System.out.println("服務(wù)啟動執(zhí)行任務(wù)"); scheduledTasks.task1(); }catch (Exception e){ e.printStackTrace(); } } }
注:啟動類記得自己加上@EnableScheduling,定時任務(wù) 才會執(zhí)行,當然這個不影響本文的邏輯測試
三、測試結(jié)果
服務(wù)啟動后,查看打印信息
到此這篇關(guān)于SpringBoot中@Scheduled實現(xiàn)服務(wù)啟動時執(zhí)行一次的文章就介紹到這了,更多相關(guān)SpringBoot 服務(wù)啟動時執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring依賴注入多種類型數(shù)據(jù)的示例代碼
這篇文章主要介紹了Spring依賴注入多種類型數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03Spring AOP如何自定義注解實現(xiàn)審計或日志記錄(完整代碼)
這篇文章主要介紹了Spring AOP如何自定義注解實現(xiàn)審計或日志記錄(完整代碼),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12關(guān)于Java創(chuàng)建線程的2種方式以及對比
這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建線程的2種方式以及對比的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01