Spring Boot與Kotlin定時任務的樣本(Scheduling Tasks),kotlinscheduling

來源:互聯網
上載者:User

Spring Boot與Kotlin定時任務的樣本(Scheduling Tasks),kotlinscheduling

在編寫Spring Boot應用中會遇到這樣的情境,比如:需要定時地發送一些簡訊、郵件之類的操作,也可能會定時地檢查和監控一些標誌、參數等。

建立定時任務

在Spring Boot中編寫定時任務是非常簡單的事,下面通過執行個體介紹如何在Spring Boot中建立定時任務,實現每過5秒輸出一下目前時間。

在Spring Boot的主類中加入@EnableScheduling註解,啟用定時任務的配置

import org.springframework.boot.SpringApplicationimport org.springframework.boot.autoconfigure.SpringBootApplicationimport org.springframework.scheduling.annotation.EnableScheduling/*** Created by http://quanke.name on 2018/1/12.*/@SpringBootApplication@EnableSchedulingclass Applicationfun main(args: Array<String>) {SpringApplication.run(Application::class.java, *args)}

建立定時任務實作類別

import org.apache.commons.logging.LogFactoryimport org.springframework.scheduling.annotation.Scheduledimport org.springframework.stereotype.Componentimport java.text.SimpleDateFormatimport java.util.*/*** Created by http://quanke.name on 2018/1/12.*/@Componentclass ScheduledTasks {val log = LogFactory.getLog(ScheduledTasks::class.java)!!private val dateFormat = SimpleDateFormat(“HH:mm:ss”)@Scheduled(fixedRate = 1000)fun reportCurrentTime() {log.info(“現在時間 , ${dateFormat.format(Date())}”)}}

運行程式,控制台中可以看到類似如下輸出,定時任務開始正常運作了。

2018-01-21 23:09:01.112 INFO 23832 — [ main] n.q.kotlin.chaper11_8_1.ApplicationKt : Started ApplicationKt in 8.024 seconds (JVM running for 8.724)
2018-01-21 23:09:02.112 INFO 23832 — [pool-2-thread-1] n.q.k.chaper11_8_1.task.ScheduledTasks : 現在時間 , 23:09:02
2018-01-21 23:09:03.042 INFO 23832 — [pool-2-thread-1] n.q.k.chaper11_8_1.task.ScheduledTasks : 現在時間 , 23:09:03
2018-01-21 23:09:04.042 INFO 23832 — [pool-2-thread-1] n.q.k.chaper11_8_1.task.ScheduledTasks : 現在時間 , 23:09:04
2018-01-21 23:09:05.042 INFO 23832 — [pool-2-thread-1] n.q.k.chaper11_8_1.task.ScheduledTasks : 現在時間 , 23:09:05

@Scheduled詳解

在上面的入門例子中,使用了@Scheduled(fixedRate = 1000) 註解來定義每過1秒執行的任務,對於@Scheduled的使用可以總結如下幾種方式:

  1. @Scheduled(fixedRate = 1000) :上一次開始執行時間點之後1秒再執行
  2. @Scheduled(fixedDelay = 1000) :上一次執行完畢時間點之後1秒再執行
  3. @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延遲1秒後執行,之後按fixedRate的規則每5秒執行一次
  4. @Scheduled(cron=”/1 “) :通過cron運算式定義規則

@Scheduled 註解是單線程的,如果需要多線程,請增加@Async

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.