1. 程式人生 > >Spring定時任務——註解@Scheduled實現定時任務

Spring定時任務——註解@Scheduled實現定時任務

Scheduled的註解定義了一個特定的方法執行的時間。可以使用fixedRate指定從呼叫開始每次延遲多少毫秒繼續呼叫。還有其他選項,比如fixedDelay,它指定從呼叫開始延時多少毫秒繼續呼叫下一個週期。您還可以使用@Scheduled(cron=”. . “)來表達更復雜的任務排程。

一張圖來說明(任務執行長度超過週期的情況):

這裡寫圖片描述

雖然定時任務可以嵌入到web應用程式和WAR檔案中,但下面演示一種更簡單的方法建立了一個獨立的應用程式。您將所有的內容打包在一個單一的、可執行的JAR檔案中,用一個傳統Java main()方法驅動。這也就是springboot的啟動類。

package
hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) throws
Exception { SpringApplication.run(Application.class); } }

fixedRate

fixedRate表示從呼叫開始每次延遲多少毫秒繼續呼叫
用法@Scheduled(fixedRate=5000),5000的單位是毫秒,也就是間隔時間是5秒。

fixedDelay

fixedDelay表示從呼叫開始延時多少毫秒繼續呼叫下一個週期
用法@Scheduled(fixedDelay=5000),5000的單位是毫秒,也就是間隔時間是5秒。

initialDelay

fixedDelay表示在第一次執行fixedRate()或fixedDelay()任務之前延遲的毫秒數。
用法@Scheduled(fixedDelay=5000, initialDelay=10000),單位是毫秒,表示第一次執行fixedDelay()任務之前先延遲10秒。

@Scheduled(cron=”0 0 * * * *”)

cron表示式相比於前幾個是比較複雜的。
該模式是6個(或者7個)單獨的空間分隔欄位的列表:表示秒、分鐘、小時、日、月、星期、(年)。

秒(0~59)
分鐘(0~59)
小時(0~23)
天(月)(0~31,但是你需要考慮你月的天數)
月(0~11)
星期(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年份(1970-2099)(可選)

取值可以是*,?,8-10,8/10,*/10,MON-FRI等類似語法,有什麼區別呢?

其中每個元素可以是一個值(如6),一個連續區間(9-12),一個間隔時間(8-18/4)(/表示每隔4小時),一個列表(1,3,5),萬用字元。由於”月份中的日期”和”星期中的日期”這兩個元素互斥的,必須要對其中一個設定?。現在明白了吧!

比如一下幾個例子

"0 0 * * * *" = 每天每時整點
"*/10 * * * * *" = 每十秒(10:20:00, 10:20:10, 10:20:20 ...)觸發
"0 0 8-10 * * *" = 每天早上8:009:0010:00 觸發
"0 0 6,19 * * *" = 每天6:0019:00 觸發
"0 0/30 8-10 * * *" = 每天8:00, 8:30, 9:00, 9:30, 10:0010:30 觸發
"0 0 9-17 * * MON-FRI" = 朝九晚五(週一至週五9:00-17:00的整點)觸發
"0 0 0 25 12 ?" = 聖誕節(每年的122500:00)觸發
"0 15 10 L * ?" = 每月最後一日的上午10:15觸發 
"0 15 10 ? * 6L" = 每月的最後一個星期五上午10:15觸發 
"0 15 10 ? * 6L 2017-2027" = 2017年至2027年的每月的最後一個星期五上午10:15觸發 
"0 15 10 ? * 6#3" = 每月的第三個星期五上午10:15觸發 
欄位 允許值 允許的特殊字元
0-59 , - * /
0-59 , - * /
小時 0-23 , - * /
1-31 , - * ? / L W C
1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可選) 留空, 1970-2099 , - * /

相關推薦

Spring定時任務——註解@Scheduled實現定時任務

Scheduled的註解定義了一個特定的方法執行的時間。可以使用fixedRate指定從呼叫開始每次延遲多少毫秒繼續呼叫。還有其他選項,比如fixedDelay,它指定從呼叫開始延時多少毫秒繼續呼叫下一個週期。您還可以使用@Scheduled(cron

springScheduled註解方式實現定時任務

1.spring配置檔案中寫:<!-spring掃描註解包的配置--> <context:component-scan base-package="XXX" /> <!—開

使用Spring的@Scheduled實現定時任務

特殊字符 scheduled class hat table clas ng- ould color 轉載: Spring配置文件xmlns加入 xmlns:task="http://www.springframework.org/schema/task" xsi:sc

spring定時任務註解@Scheduled的記錄 spring 定時任務@Scheduled

spring 定時任務@Scheduled   轉自https://www.cnblogs.com/0201zcr/p/5995779.html 1、配置檔案 <?xml version="1.0" encoding="UTF-8

使用spring @Scheduled實現定時任務

xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation中加入: http://www.springframework.org/schema/task

Spring註解方式實現定時任務

..... @EnableScheduling public class certManagerService { @Autowired private certManageDomain

SpringSpring定時任務註解@Scheduled原來如此簡單

1 簡介 定時任務的實現非常多,JDK的Timer、Spring提供的輕量級的Scheduled Task、QuartZ和Linux Cron等,還有一些分散式的任務排程框架。本文主要介紹Scheduled Task的使用。 2 方便的4種方式 註解@Scheduled只能用於滿足下面兩個條件的方法上: (1

Spring與Quartz的整合實現定時任務調度

java代碼 content sta 一個bug next 小時 change nsa 發現 Spring與Quartz的整合實現定時任務調度 博客分類: Java Web SpringQuartz任務調度定時任務 最近在研究Spring中的定時任務功能,最好的

Spring Boot中使用@Scheduled建立定時任務實戰

一 點睛 我們在編寫Spring Boot應用中經常會遇到這樣的場景,比如:我需要定時地傳送一些簡訊、郵件之類的操作,也可能會定時地檢查和監控一些標誌、引數等。此時,定時任務就派上用場了。 @Sch

Spring Boot中使用@Scheduled建立定時任務

我們在編寫Spring Boot應用中經常會遇到這樣的場景,比如:我需要定時地傳送一些簡訊、郵件之類的操作,也可能會定時地檢查和監控一些標誌、引數等。 建立定時任務 在Spring Boot中編寫定時任務是非常簡單的事,下面通過例項介紹如

Spring 3整合Quartz 2實現定時任務三:動態暫停 恢復 修改和刪除任務

前面我們已經完成了spring 3和quartz 2的整合以及動態新增定時任務,我們接著來完善它,使之能支援更多的操作,例如暫停、恢復、修改等。 在動態新增定時任務中其實已經涉及到了其中的一些程式碼,這裡我們再來細化的理一理。先來看一下我們初步要實現的目標效果圖,這裡

【轉載】Win7利用任務計劃程序實現定時關機

系統 zha ref 定時 設置 執行 執行時間 img win10系統 在Win7、Win8或者Win10系統中,如果要實現電腦的自動定時關機,不需要借用任何的外部程序,直接系統自帶的任務計劃程序即可實現電腦的定時自動關機,支持設定電腦關機時間以及執行頻率次數,如固定每天

吳裕雄--天生自然python學習筆記:python通過“任務計劃程式”實現定時自動下載或更新執行 PM2.5 資料抓取程式資料

在 Windows 任務計劃程式中,設定每隔 30 分鐘自動抓取 PM2.5 資料,井儲存 在 SQLite 資料庫中 。     import sqlite3,ast,requests,os from bs4 import BeautifulSoup #cur_path=os

Spring的IOC註解方式實現

1. 步驟一:匯入註解開發所有需要的jar包 * 引入IOC容器必須的6個jar包 * 多引入一個:Spring框架的AOP的jar包,spring-aop的jar包 2. 步驟二:建立對應的包結構,編寫Java的類 * UserService          

SPRING CACHE REDIS 註解實現快取策略

為了解決資料庫查詢效率瓶頸,提升併發系統能力,快取的應用已經非常普遍和必要了。剛接觸REDIS時,如何使SPRING框架與REDIS更高效地整合,困擾了我很長時間。 先說下不使用SPRING CACHE時的兩種快取應用模式: 1.使用redis作為持久層的二級快

spring AOP 之 註解 配置實現(附 Java 程式碼例項)

轉載自http://blog.csdn.net/qq_27093465/article/details/53381527 匯入類掃描的註解解析器名稱空間:xmlns:context="http://www.springframework.org/schema/cont

Spring mvc基於註解方式實現簡單HelloWorld

實現spring MVC有兩種不同的方式:基於XML配置檔案和基於註解。 上篇部落格介紹了基於XML配置檔案的方式,這裡我們使用基於註解的方式來實現。 下面只重點介紹與XML配置檔案方式不同的兩個地方:Spring配置檔案(springmvc-servlet.xml)

Spring Aop基於註解實現

一.AspectOriented Programing,面向切面程式設計。   AOP主要用於日誌記錄,效能統計,安全控制(許可權控制),事務處理,異常處理等。將日誌記錄,效能統計,安全控制,事務處理,異常處理等程式碼從業務邏輯程式碼中劃分出來,通過對這些行為的分離,我們希望可以將它們獨立

spring註解 @Scheduled(cron = "0 0 1 * * *")實現定時的執行任務

  @Scheduled(cron = "0 0 1 * * *")    在使用該註解以前請做好以下準備工作,配置好相應的xm檔案。   配置定時註解的步驟:http://blog

使用Spring定時器@Scheduled註解實現定時任務

在很多時候我們在專案中需要週期性地執行一些操作,並且這些操作不能通過簡單的for迴圈和while迴圈來實現,因此我們需要有一個可以實現定時操作的方法,在spring中就有這麼一個非常方便的方法,下面就簡單記錄下@Scheduled註解的使用方法。 1、首先我們需要一個spring專案,這個是前