您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“怎么用SpringBoot實現定時器”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么用SpringBoot實現定時器”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Spring boot啟動類代碼,加入了@EnableScheduling注解來開啟定時器功能
@SpringBootApplication @EnableScheduling // 開啟定時功能 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } }
調度任務代碼,需要通過@Component注解將任務類注入到IoC容器中
@Component public class TestSchedulingTask { // 這個cron表達式代表從0秒開始,每過3秒執行一次。 @Scheduled(cron = "0/3 * * * * ?") public void test(){ // 大家可以根據公司的業務來實現,更希望是@Autowrite注入service層的接口,業務邏輯寫在service層中。 // 這里測試我就輸出當前系統時間了... Date date = new Date(System.currentTimeMillis()); String rule = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(rule); String format = simpleDateFormat.format(date); System.out.println(format); } }
這里注意每個任務方法都要加上@Scheduled注解,并且規定好cron表達式。
完全可以放心,并且網上也有在線生成cron表達式的網站,我們來看看控制臺輸出的結果吧。
cron表達式
字段 | 范圍 | 允許的字符 |
秒(second) | 0-59 | ,/-* |
分(minute) | 0-59 | ,/-* |
小時(hour) | 0-23 | ,/-* |
日期(day of month) | 1-31(需要考慮月份不一致) | ,/-*?LW |
月份(month) | 1-12(對應的英文縮寫也行) | ,/-* |
星期(day of week) | 1-7 | ,/-*?L |
年(year) | 這玩意基本用不到 | 這玩意基本用不到 |
允許的字符的解釋:
,:算是一個枚舉,多值的存在,比如second中5,20就代表5和20秒的時候觸發。
/:值1/值2,值1代表開始時間,值2代表隔多久一次,比如我案例中就是從0秒開始3秒觸發一次。
-:范圍值,從多久到多久。
*:全部范圍通用。
?:只存在于日期和星期中,假如你想要每個月2號觸發,但是你星期用*就會每天都會觸發,就會產生bug,所以需要?來代替*。
L:表示最后的意思,出現在日期和星期中,比如在日期中使用L就代表當月最后一天,在星期中使用3L就代表最后一個星期三觸發。
W:表示工作日,在日期中使用,假如使用9W,如果9號是星期1-5就直接觸發,如果9號是星期六就8號觸發,如果9號是星期天就星期一觸發也就是10號觸發。
讀到這里,這篇“怎么用SpringBoot實現定時器”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。