本指南將引導您完成使用Spring任務調度的步驟。閱讀原文html
您將構建一個應用程序,該應用程序使用Spring的@Scheduled 註解每5秒打印一次當前時間。java
大約十五分鐘git
一個喜歡的文本編輯器或者IDEgithub
JDK 1.8 或者更高版本web
Gradle 4+ 或者 Maven 3.2+spring
你也能夠導入代碼到IDE中apache
IntelliJ IDEAintellij-idea
像大多數Spring入門指南同樣,您能夠從頭開始並完成每一個步驟,也能夠繞過已熟悉的基本設置步驟。 不管哪一種方式,你最終獲得工做代碼。oracle
1. 打開STS,New ————> Import Spring Getting Started Content
2. 輸入sche 搜索找到Scheduling Tasks
Tips: Build Type 選擇Maven, Code Style 咱們所有勾選,這樣能夠生成一個寫好的代碼和一個空白的Project,這樣很方便咱們學習和研究。
3. 點擊Finish以後項目已經構建完成,如今讓咱們建立一個scheduled task 類
src/main/java/hello/ScheduledTasks.java
package hello; import java.text.SimpleDateFormat; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ScheduledTasks { private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(fixedRate = 5000) public void reportCurrentTime() { log.info("The time is now {}", dateFormat.format(new Date())); } }
Scheduled註解定義了特定方法的運行時間。 注意:此示例使用fixedRate,它指定從每次調用的開始時間開始測量的方法調用之間的時間間隔。 還有其餘選項,好比fixedDelay,它指定了從任務完成以後測量的調用之間的時間間隔。 您還可使用@Scheduled(cron =「...」)表達式來執行更復雜的任務計劃。
雖然計劃任務能夠嵌入到Web應用程序和WAR文件中,但下面演示的更簡單的方法會建立一個獨立的應用程序。 您將全部內容打包到一個單獨的,可執行的JAR文件中,由一個良好的舊Java main()方法驅動。
src/main/java/hello/Application.java
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); } }
@SpringBootApplication是一個方便的註釋,它增長了如下全部內容:
main()方法使用Spring Boot的SpringApplication.run()方法啓動應用程序。 你有沒有注意到沒有一行XML? 沒有web.xml文件。 這個Web應用程序是100%純Java,您沒必要處理配置任何管道或基礎設施。
@EnableScheduling確保建立後臺任務執行程序。 沒有它,沒有任何計劃。
您可使用Gradle或Maven從命令行運行應用程序。 或者您能夠構建一個包含全部必需的依賴項,類和資源的可執行JAR文件,並運行該文件。 這使得在整個開發生命週期內跨越不一樣環境等,將服務做爲應用程序發佈,版本化和部署變得很是容易。
執行命令後咱們能夠在Target目錄下看到生成的可執行 jar
若是您正在使用Gradle,則可使用./gradlew bootRun運行該應用程序。 或者您可使用./gradlew構建構建JAR文件。 而後你能夠運行JAR文件:
java -jar build/libs/gs-scheduling-tasks-0.1.0.jar
若是您使用的是Maven,則可使用./mvnw spring-boot:run來運行該應用程序。 或者,您可使用./mvnw clean包構建JAR文件。 而後你能夠運行JAR文件:
java -jar target/gs-scheduling-tasks-0.1.0.jar
上述過程將建立一個可運行的JAR。 您也能夠選擇構建經典的WAR文件。
記錄輸出顯示,您能夠從日誌中看到它在後臺線程上。 你應該看到你的計劃任務每5秒觸發一次:
源碼:點擊查看