SpringBoot簡單實現定時器過程
前言
公司最近需要完成一個定時去DB查詢數據,把有問題的數據給篩選出來通過微信小程序的消息推送功能將有問題的數據推送給指定的員工去篩查問題。對于Java后端來說肯定實現定時功能肯定是使用到Spring封裝好的定時調度Scheduled。
正文
定時器的實現
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秒執(zhí)行一次。
@Scheduled(cron = "0/3 * * * * ?")
public void test(){
// 大家可以根據公司的業(yè)務來實現,更希望是@Autowrite注入service層的接口,業(yè)務邏輯寫在service層中。
// 這里測試我就輸出當前系統(tǒng)時間了...
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注解,并且規(guī)定好cron表達式。
完全可以放心,不會cron表達式沒關系,后面會詳細講解,并且網上也有在線生成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秒的時候觸發(fā)。
/:值1/值2,值1代表開始時間,值2代表隔多久一次,比如我案例中就是從0秒開始3秒觸發(fā)一次。
-:范圍值,從多久到多久。
*:全部范圍通用。
?:只存在于日期和星期中,假如你想要每個月2號觸發(fā),但是你星期用*就會每天都會觸發(fā),就會產生bug,所以需要?來代替*。
L:表示最后的意思,出現在日期和星期中,比如在日期中使用L就代表當月最后一天,在星期中使用3L就代表最后一個星期三觸發(fā)。
W:表示工作日,在日期中使用,假如使用9W,如果9號是星期1-5就直接觸發(fā),如果9號是星期六就8號觸發(fā),如果9號是星期天就星期一觸發(fā)也就是10號觸發(fā)。
其實懂個大概就夠了,能做筆記記錄是最好,因為有在線生成網站,百度隨便就能找到
總結
因為本人項目暫時不用考慮異步之類的所以本帖暫時沒有帶來異步的定時器,不過后續(xù)會出異步的帖子,關于定時任務的底層源碼也會出篇帖子來細講。
到此這篇關于SpringBoot簡單實現定時器過程的文章就介紹到這了,更多相關SpringBoot定時器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring?Boot在Web應用中基于JdbcRealm安全驗證過程
這篇文章主要為大家介紹了Spring?Boot在Web應用中基于JdbcRealm安全驗證過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>2023-02-02
SpringCloud turbine監(jiān)控實現過程解析
這篇文章主要介紹了SpringCloud turbine監(jiān)控實現過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12
java IO流 之 輸出流 OutputString()的使用
這篇文章主要介紹了java IO流 之 輸出流 OutputString()的使用的相關資料,需要的朋友可以參考下2016-12-12
Java concurrency之鎖_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Java concurrency之鎖的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
SpringSession會話管理之Redis與JDBC存儲實現方式
本文將詳細介紹Spring Session的核心概念、特性以及如何使用Redis和JDBC來實現會話存儲,幫助開發(fā)者構建更加健壯和可擴展的應用系統(tǒng),希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04

