日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot高级-任务-定时任务

發布時間:2024/4/13 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot高级-任务-定时任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
接下來我們有定時任務,比如每天來收集和分析日志,比如每個月來匯總日志,生成報表等等等等,Spring也支持了非常簡便的任務支持,我們只需要兩個注解,第一個開啟定時任務,第二個給我們需要定時的任務方法加上@Schedule注解,然后寫上Cron表達式即可,我們來測試一下

我在這創建一個Service,叫ScheduleService,把它加載在容器中,假設他有一個方法,這個方法我們需要定時執行,我們只需要給hello上加上@Scheduled注解,這個注解里面有非常多的屬性,最重要的Cron/*** A cron-like expression, extending the usual UN*X definition to include* triggers on the second as well as minute, hour, day of month, month* and day of week. e.g. {@code "0 * * * * MON-FRI"} means once per minute on* weekdays (at the top of the minute - the 0th second).* @return an expression that can be parsed to a cron schedule* @see org.springframework.scheduling.support.CronSequenceGenerator*/ String cron() default "";來指定Cron表達式,這個表達式怎么寫呢,這一塊有提示,我們這個表達式包括有秒,和分,時,還有每一月的某一天,有月份,還有每周的哪一天,就有這么幾個值,把它復制過來,秒,分,時,日,月,還有咱們的周,所以我們來寫表達式的話呢,按照這個表達式來寫,還有一個示例我們拿過來,這個例子,表達式總共6位,每位用空格分割,分割的分別代表哪一秒,還有分,哪一分鐘,時,幾點,還有日,是我們每個月的多少號,還有我們的這個月,和周,代表是周幾,那么我們就來寫上一個表達式,這個表達式代表的意思是,0 * * * * MON-FRI,周一到周五,MON-FRI,*代表任意時刻,不管是哪一月,哪一日,哪一個小時,哪一個分鐘,但是整秒啟動,意思周一到周五,每一分鐘都啟動一次,他這個是整秒啟動,如果0再改為*,我們一定要開啟自動任務功能,@EnableScheduling,開啟基于注解的定時任務,把它加上以后我們來重啟一下這個應用,看一下控制臺是否會有打印 package com.learn.service;import java.util.Date;import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service;@Service public class ScheduleService {/*** second(秒), minute(分),hour(時),day of month(日),month(月), day of week(周幾)* 0 * * * * MON-FRI*/@Scheduled(cron="* * * * * *")//@Scheduled(cron="0,1,2,3,4 * * * * MON-SAT")//@Scheduled(cron="0-4 * * * * MON-SAT")// 每4秒執行一次 // @Scheduled(cron="0/4 * * * * MON-SAT")public void hello() {System.out.println("hello...."+new Date()); // System.out.println(new Date());} } package com.learn;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling;// 開啟異步注解功能 @EnableAsync @EnableScheduling @SpringBootApplication public class SpringBootTaskApplication {public static void main(String[] args) {// Spring應用啟動起來SpringApplication.run(SpringBootTaskApplication.class,args);}} 除了寫精確值,還取這些特殊字符,這個*號我們剛才見過了,關鍵就是這些特殊字符,逗號代表枚舉,所謂的枚舉,就是要列出我們的時間點,我在這把表達式換一下,我把這些都嘗試一下,這個秒我來列舉上"0,1,2,3,4",5秒的時間,這5秒都會來啟動,剩下我都不變,周一到周六,不管是哪一天,哪一個小時,哪一分鐘,0,1,2,3,4這幾秒都會運行一次,我們來觀察一下,這是我們第一個叫枚舉,還有我們第二種辦法,斜杠就是步長,步長就是每隔多長時間執行一次,0/4代表從0秒啟動,每4秒執行一次,我們來嘗試一下,我們來啟動,?是來進行沖突匹配的,星期這一塊的寫法,你可以寫英文,SUN-SAT,代表周日到周六,或者你來寫數字,而數字你可以寫0-7,1-6代表周一到周六,0和7都能代表周日,這個和以前的調度框架Quartz有點不一樣,這個Quartz是1到7,1代表周日,2代表周一,而我們這個是0跟7都是周日,1-6是周一到周六,大家注意一下,還有我們能寫的表達式,比如字母L代表最后,W代表工作日,C是和我們JAVA的Calendar類來進行計算,而#號代表第幾個,比如4#2的意思,就是第二個,第二個星期四,我就不一個一個嘗試了,我在這里給大家寫了一些表達式,大家能讀懂就行了

?

總結

以上是生活随笔為你收集整理的SpringBoot高级-任务-定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。