您好,登錄后才能下訂單哦!
小編這次要給大家分享的是SpringBoot如何執(zhí)行定時任務(wù)@Scheduled,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
在做項目時,需要一個定時任務(wù)來接收數(shù)據(jù)存入數(shù)據(jù)庫,后端再寫一個接口來提供該該數(shù)據(jù)的最新的那一條。
數(shù)據(jù)保持最新:設(shè)計字段sign的值(0,1)來設(shè)定是否最新
定時任務(wù)插入數(shù)據(jù):首先進行更新,將所有為1即新數(shù)據(jù)設(shè)置過期,然后插入新數(shù)據(jù),設(shè)置sign為1。這兩個操作是原子操作。通過添加事務(wù)來進行控制。
Java 定時任務(wù)的幾種實現(xiàn)方式
Spring 提供的一個注解: @Schedule,開發(fā)簡單,使用比較方便,也是本文介紹的一種方式
Spring 自身提供了對定時任務(wù)的支持,本文將介紹 Spring Boot 中 @Scheduled 定時器的使用。
創(chuàng)建定時任務(wù)
首先,在項目啟動類上添加@EnableScheduling
注解,開啟對定時任務(wù)的支持
@SpringBootApplication @EnableScheduling public class ScheduledApplication { public static void main(String[] args) { SpringApplication.run(ScheduledApplication.class, args); } }
其中 @EnableScheduling
注解的作用是發(fā)現(xiàn)注解@Scheduled
的任務(wù)并后臺執(zhí)行。
其次,編寫定時任務(wù)類和方法,定時任務(wù)類通過Spring IOC 加載
,使用@Component
注解,定時方法使用@Scheduled
注解。
@Component public class ScheduledTask { @Scheduled(fixedRate = 3000) public void scheduledTask() { System.out.println("任務(wù)執(zhí)行時間:" + LocalDateTime.now()); } }
fixedRate 是 long 類型,表示任務(wù)執(zhí)行的間隔毫秒數(shù),以上代碼中的定時任務(wù)每 3 秒執(zhí)行一次。
@Scheduled詳解
在上面的入門例子中,使用了@Scheduled(fixedRate = 3000) 注解來定義每過 3 秒執(zhí)行的任務(wù),對于 @Scheduled 的使用可以總結(jié)如下幾種方式:
其中,常用的cron表達式有:
看完這篇關(guān)于SpringBoot如何執(zhí)行定時任務(wù)@Scheduled的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。