首頁 > Java > java教程 > 主體

怎麼用SpringBoot實現定時器

王林
發布: 2023-05-10 14:58:22
轉載
1122 人瀏覽過

定時器的實作

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表達式的網站,我們來看看控制台輸出的結果吧。

怎麼用SpringBoot實現定時器

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實現定時器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板