欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot自定義定時任務(wù)的實現(xiàn)示例

 更新時間:2024年05月11日 08:31:54   作者:銀氨溶液  
本文主要介紹了SpringBoot自定義定時任務(wù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

通常,在我們的項目中需要定時給前臺發(fā)送一些提示性消息或者我們想要的定時信息,這個時候就需要使用定時任務(wù)來實現(xiàn)這一功能,實現(xiàn)也很簡單,接下來具體來看看吧~

簡單定時任務(wù)

首先,你需要在你的啟動類上加上開啟定時任務(wù)的注解

然后,就可以開始編寫一個簡單的自定義定時任務(wù)的邏輯

@Component
public class ScheduleConfig {
    @Scheduled(cron = "*/5 * * * * ?")
    public void printNowTime(){
            System.out.println("固定定時任務(wù)執(zhí)行:--->"+ LocalDateTime.now()+",此任務(wù)為五秒執(zhí)行一次");
    }
}

以上的代碼邏輯為每五秒打印出當(dāng)前的時間,控制臺打印結(jié)果:

@Scheduled除過cron還有三種方式:fixedRate,fixedDelay,initialDelay

cron:表達(dá)式可以定制化執(zhí)行任務(wù),但是執(zhí)行的方式是與fixedDelay相近的,也是會按照上一次方法結(jié)束時間開始算起。

fixedRate:在每次任務(wù)完成后等待一定的時間再進(jìn)行下一次執(zhí)行,指定連續(xù)執(zhí)行之間的延遲時間。

initialDelay:initialDelay = 10000 表示在容器啟動后,延遲10秒后再執(zhí)行一次定時器。

fixedDelay:是按照一定的速率執(zhí)行,是從上一次方法執(zhí)行開始的時間算起,如果上一次方法阻塞住了,下一次也是不會執(zhí)行,但是在阻塞這段時間內(nèi)累計應(yīng)該執(zhí)行的次數(shù),當(dāng)不再阻塞時,一下子把這些全部執(zhí)行掉,而后再按照固定速率繼續(xù)執(zhí)行。

因此,需要注意fixedRate與fixedDelay的區(qū)別fixedRate是基于任務(wù)開始執(zhí)行的時間點來計算下一次任務(wù)開始執(zhí)行的時間,因此任務(wù)的執(zhí)行時間間隔是相對固定的,不受到任務(wù)執(zhí)行時間的影響。如果指定的時間間隔小于任務(wù)執(zhí)行的實際時間,則任務(wù)可能會并發(fā)執(zhí)行。而fixedDelay是基于任務(wù)執(zhí)行完成的時間點來計算下一次任務(wù)開始執(zhí)行的時間,因此任務(wù)的執(zhí)行時間間隔是相對不規(guī)則的,受到任務(wù)執(zhí)行時間的影響.

cron表達(dá)式

cron表達(dá)式是一個字符串,分為6或7個域,每兩個域之間用空格分隔,

其語法格式為:"秒域 分域 時域 日域 月域 周域 年域"

取值范圍

常例

但是,你會發(fā)現(xiàn)以上的方式雖然也能實現(xiàn)定時任務(wù),缺點是當(dāng)我們調(diào)整了執(zhí)行周期的時候,需要重啟應(yīng)用才能生效,這多少有些不方便。為了達(dá)到實時生效的效果,那么可以使用接口來完成定時任務(wù),統(tǒng)一將定時器信息存放在數(shù)據(jù)庫中。

基于接口的方式

以下是對應(yīng)數(shù)據(jù)表信息

 使用mybatis-plus實現(xiàn)cron表的mapper、service接口、serviceimpl實現(xiàn)類

接下來實現(xiàn)自定義定時任務(wù),通過從數(shù)據(jù)庫中獲取cron表達(dá)式

@Component
public class CompleteScheduleConfig implements SchedulingConfigurer
{

    @Autowired
    private CronDao cronMapper;

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(
                ()-> System.out.println("時間到了哦,當(dāng)前時間為"+ LocalDateTime.now().toLocalTime()),
//                設(shè)置定時任務(wù)執(zhí)行周期,從數(shù)據(jù)庫中獲取
                triggerContext -> {
                    String cron=cronMapper.selectById(1).getCronExpression();
                    if(cron==null){
                        return null;
                    }
//                    返回執(zhí)行周期
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );
    }

這里我把需要從數(shù)據(jù)中查的cron表達(dá)式id寫死了,讀者可以根據(jù)自己的項目需求進(jìn)行修改。

到此這篇關(guān)于SpringBoot自定義定時任務(wù)的文章就介紹到這了,更多相關(guān)SpringBoot自定義定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatisPlus3.4.3版自動生成代碼的使用過程

    MyBatisPlus3.4.3版自動生成代碼的使用過程

    這篇文章主要介紹了MyBatisPlus3.4.3版自動生成代碼的使用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Java的MyBatis框架中實現(xiàn)多表連接查詢和查詢結(jié)果分頁

    Java的MyBatis框架中實現(xiàn)多表連接查詢和查詢結(jié)果分頁

    這篇文章主要介紹了Java的MyBatis框架中實現(xiàn)多表連接查詢和查詢結(jié)果分頁,借助MyBatis框架中帶有的動態(tài)SQL查詢功能可以比普通SQL查詢做到更多,需要的朋友可以參考下
    2016-04-04
  • Springboot使用Spring Data JPA實現(xiàn)數(shù)據(jù)庫操作

    Springboot使用Spring Data JPA實現(xiàn)數(shù)據(jù)庫操作

    Spring Data JPA 是 Spring 基于 Spring Data 框架、在JPA 規(guī)范的基礎(chǔ)上開發(fā)的一個框架,使用 Spring Data JPA 可以極大地簡化JPA 的寫法,本章我們將詳細(xì)介紹在Springboot中使用 Spring Data JPA 來實現(xiàn)對數(shù)據(jù)庫的操作
    2021-06-06
  • elasticsearch插件開發(fā)教程

    elasticsearch插件開發(fā)教程

    這篇文章主要為大家詳細(xì)介紹了elasticsearch插件開發(fā)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java保留兩位小數(shù)的幾種寫法總結(jié)

    Java保留兩位小數(shù)的幾種寫法總結(jié)

    相信大家在平時做項目時,可能會有這樣的業(yè)務(wù)需求: 頁面或界面上展示的數(shù)據(jù)保留小數(shù)點后兩位。 那么這篇文章小編就和大家分享了利用Java保留兩位小數(shù)的幾種寫法,文章給出了詳細(xì)的示例代碼,對大家的學(xué)習(xí)和理解很有幫助,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)下吧。
    2016-11-11
  • SpringBoot繼承LogStash實現(xiàn)日志收集的方法示例

    SpringBoot繼承LogStash實現(xiàn)日志收集的方法示例

    這篇文章主要介紹了SpringBoot繼承LogStash實現(xiàn)日志收集的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Java+TestNG接口自動化入門詳解

    Java+TestNG接口自動化入門詳解

    本文主要介紹了Java+TestNG接口自動化入門,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 一文讓你了解透徹Java中的IO模型

    一文讓你了解透徹Java中的IO模型

    本文只是說明了IO模型,讓你了解IO模型是什么,怎么區(qū)分IO模型,以及分析了Java中的三種IO模型,本文是純理論知識,看完之后會讓你對IO有更加深刻的理解,感興趣的同學(xué)可以參考一下
    2023-05-05
  • Java中使用JWT生成Token進(jìn)行接口鑒權(quán)實現(xiàn)方法

    Java中使用JWT生成Token進(jìn)行接口鑒權(quán)實現(xiàn)方法

    這篇文章主要介紹了Java中使用JWT生成Token進(jìn)行接口鑒權(quán)實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • java實現(xiàn)微信小程序加密數(shù)據(jù)解密算法

    java實現(xiàn)微信小程序加密數(shù)據(jù)解密算法

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)微信小程序加密數(shù)據(jù)解密算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評論