我們在編寫Spring Boot應用中經常會遇到這樣的場景,比如:我需要定時地發送一些短信、郵件之類的操作,也可能會定時地檢查和監控一些標志、參數等。
創建定時任務
在Spring Boot中編寫定時任務是非常簡單的事,下面通過實例介紹如何在Spring Boot中創建定時任務,實現每過5秒輸出一下當前時間。
在Spring Boot的主類中加入@EnableScheduling注解,啟用定時任務的配置
1
2
3
4
5
6
7
8
|
@SpringBootApplication @EnableScheduling public class SpringbootScheduletaskApplication { public static void main(String[] args) { SpringApplication.run(SpringbootScheduletaskApplication. class , args); } } |
1
2
3
4
5
6
7
8
|
@Component private static final SimpleDateFormat sdf = new SimpleDateFormat( "HH:mm:ss" ); @Scheduled (fixedRate = 5000 ) public void reportCurrentTime() { System.out.println( "現在時間:" + sdf.format( new Date())); } } |
創建定時任務實現類
運行程序,控制臺中可以看到類似如下輸出,定時任務開始正常運作了。
2016-05-15 10:40:04.073 INFO 1688 --- [ main] : Started Application in 1.433 seconds (JVM running for 1.967)
現在時間:10:40:09
現在時間:10:40:14
現在時間:10:40:19
現在時間:10:40:24
現在時間:10:40:29522
現在時間:10:40:34
關于上述的簡單入門示例也可以參見官方的Scheduling Tasks
@Scheduled詳解
在上面的入門例子中,使用了@Scheduled(fixedRate = 5000) 注解來定義每過5秒執行的任務,對于@Scheduled的使用可以總結如下幾種方式:
- @Scheduled(fixedRate = 5000) :上一次開始執行時間點之后5秒再執行
- @Scheduled(fixedDelay = 5000) :上一次執行完畢時間點之后5秒再執行
- @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延遲1秒后執行,之后按fixedRate的規則每5秒執行一次
- @Scheduled(cron="*/5 * * * * *") :通過cron表達式定義規則
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/ilinuxer/p/6507174.html