scheduled註解的詳細解析

一、scheduled註解cron

1、scheduled註解是Spring框架中用於定時執行方法的註解。其中cron用於設定定時任務的執行時間。cron表達式是由6個或7個空格分隔的時間元素字段組成,每個字段表達一個時間的意義。常見的格式為:秒 分 時 日 月 周,如“0 0 12 * * ?”表示每天中午12點觸發執行。每個時間元素字段可以使用逗號、星號、連接符等符號設定多個取值或範圍。

2、以每天中午12點觸發執行為例,可以設置cron屬性為“0 0 12 * * ?”。

@Scheduled(cron = "0 0 12 * * ?")
public void execute() {
    //...
}

3、對於cron表達式的具體使用方法,可以參考相關文檔或在線cron表達式生成工具。

二、scheduled註解cron mon

1、除了固定時間元素外,cron表達式中還有一個“周”的時間元素,用於設定一周中的哪些天需要執行任務。使用“?”佔位符代表忽略掉該時間元素字段,例如“0 0 12 ? * MON-FRI”表示每個工作日中午12點觸發執行。

@Scheduled(cron = "0 0 12 ? * MON-FRI")
public void execute() {
    //...
}

2、有時候需要同時設定小時和周的時間元素,可以使用連接符“/”設定時間間隔,例如“0 0 0/2 * * ?”表示每兩小時執行一次。

@Scheduled(cron = "0 0 0/2 * * ?")
public void execute() {
    //...
}

三、scheduled註解配置時間

1、除了使用cron表達式設定定時任務的執行時間外,還可以使用fixedRate、fixedDelay、initialDelay屬性分別設定固定速率執行、固定延遲後執行、初始延遲後開始執行。

2、fixedRate表示任務開始後按照一定的頻率執行,即從任務開始時計算下一次執行時間,無論上次執行是否完成,都按照間隔時間進行執行。使用示例如下:

@Scheduled(fixedRate = 1000)
public void execute() {
    //...
}

3、fixedDelay表示任務完成後按照一定的延遲時間後再次執行,即從任務結束時計算下一次執行時間。使用示例如下:

@Scheduled(fixedDelay = 1000)
public void execute() {
    //...
}

4、initialDelay表示任務啟動後延遲一定時間再開始執行。使用示例如下:

@Scheduled(initialDelay = 1000, fixedDelay = 1000)
public void execute() {
    //...
}

四、scheduled註解不執行

1、在某些情況下,可能需要臨時禁止某個定時任務的執行,可以使用@ConditionalOnProperty註解和配置文件來實現。

2、例如,給定配置文件中配置了一個名為“task.enable”的布爾類型屬性,表示定時任務是否可用。在應用啟動時,Spring會讀取該配置文件並根據該屬性決定是否創建定時任務:

@Scheduled(cron = "0 0 12 * * ?")
@ConditionalOnProperty(name = "task.enable", havingValue = "true", matchIfMissing = true)
public void execute() {
    //...
}

五、scheduled註解是分布式的嗎

1、Spring框架的定時任務默認是單機運行的,不支持分布式環境下的任務調度。但是,可以通過其他框架(如Quartz、Elastic-Job等)或自行實現分布式調度器,將任務調度器部署在多個節點上,然後通過分布式鎖、Zookeeper等方式協調多個節點之間的任務調度,實現分布式定時任務的管理和執行。

六、scheduled註解配置時間隨機

1、除了使用固定時間間隔或固定時間元素設定定時任務的執行時間,還可以使用隨機時間來實現間隔執行的任務。

2、可以使用Math.random()函數生成一個隨機的時間間隔,例如:

@Scheduled(fixedDelayString = "#{\"${random.int(5000)+5000}\":T}")
public void execute() {
    //...
}

3、上述示例中,使用SpEL表達式和配置文件中的random.int屬性創建一個隨機的時間間隔,範圍在5000ms~10000ms之間。

七、scheduled註解cron表達式

1、cron表達式中包含6個或7個時間元素字段,分別表示從秒開始到周幾的時間單位。

2、每個時間元素字段都可以設定多個取值或範圍,使用逗號或連接符進行分隔,例如“0 0 6,12,18 * * ?”表示每天早上6點、中午12點和晚上6點執行任務。

3、支持一些特殊符號,例如“L”表示最後一天,“#”表示第幾個周幾,例如“0 0 12 ? * WED#2”表示每月第二個周三中午12點執行。

八、scheduled註解不生效

1、scheduled註解不生效的原因可能有以下幾個方面:

2、首先,需要確保添加了@EnableScheduling註解啟用了任務調度器。

3、其次,需要確保定時任務的方法聲明為public、無參、void類型,並且標註了@Scheduled註解,例如:

@EnableScheduling
@Configuration
public class SchedulerConfig {

    @Scheduled(cron = "0 0 12 * * ?")
    public void execute() {
        //...
    }
}

4、還需要確保定時任務的執行方法的權限設置正確,例如不應該是private權限。

九、scheduled註解每5分鐘

1、使用cron表達式可以設定任務的精確執行時間。例如,下面的示例表示每5分鐘執行一次:

@Scheduled(cron = "0 0/5 * * * ?")
public void execute() {
    //...
}

2、在cron表達式中,可以使用“/”符號設定時間間隔。例如“0/5”表示每5秒執行一次,“0 0/5 * * * ?”表示每5分鐘執行一次。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/241891.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:44
下一篇 2024-12-12 12:44

相關推薦

  • Hibernate註解聯合主鍵 如何使用

    解答:Hibernate的註解方式可以用來定義聯合主鍵,使用@Embeddable和@EmbeddedId註解。 一、@Embeddable和@EmbeddedId註解 在Hibe…

    編程 2025-04-29
  • index.html怎麼打開 – 詳細解析

    一、index.html怎麼打開看 1、如果你已經擁有了index.html文件,那麼你可以直接使用任何一個現代瀏覽器打開index.html文件,比如Google Chrome、…

    編程 2025-04-25
  • Resetful API的詳細闡述

    一、Resetful API簡介 Resetful(REpresentational State Transfer)是一種基於HTTP協議的Web API設計風格,它是一種輕量級的…

    編程 2025-04-25
  • AXI DMA的詳細闡述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基於AMBA…

    編程 2025-04-25
  • neo4j菜鳥教程詳細闡述

    一、neo4j介紹 neo4j是一種圖形數據庫,以實現高效的圖操作為設計目標。neo4j使用圖形模型來存儲數據,數據的表述方式類似於實際世界中的網絡。neo4j具有高效的讀和寫操作…

    編程 2025-04-25
  • 關鍵路徑的詳細闡述

    關鍵路徑是項目管理中非常重要的一個概念,它通常指的是項目中最長的一條路徑,它決定了整個項目的完成時間。在這篇文章中,我們將從多個方面對關鍵路徑做詳細的闡述。 一、概念 關鍵路徑是指…

    編程 2025-04-25
  • c++ explicit的詳細闡述

    一、explicit的作用 在C++中,explicit關鍵字可以在構造函數聲明前加上,防止編譯器進行自動類型轉換,強制要求調用者必須強制類型轉換才能調用該函數,避免了將一個參數類…

    編程 2025-04-25
  • HTMLButton屬性及其詳細闡述

    一、button屬性介紹 button屬性是HTML5新增的屬性,表示指定文本框擁有可供點擊的按鈕。該屬性包括以下幾個取值: 按鈕文本 提交 重置 其中,type屬性表示按鈕類型,…

    編程 2025-04-25
  • Vim使用教程詳細指南

    一、Vim使用教程 Vim是一個高度可定製的文本編輯器,可以在Linux,Mac和Windows等不同的平台上運行。它具有快速移動,複製,粘貼,查找和替換等強大功能,尤其在面對大型…

    編程 2025-04-25
  • crontab測試的詳細闡述

    一、crontab的概念 1、crontab是什麼:crontab是linux操作系統中實現定時任務的程序,它能夠定時執行與系統預設時間相符的指定任務。 2、crontab的使用場…

    編程 2025-04-25

發表回復

登錄後才能評論