譯: 6. 任務調度(定時執行任務)

本指南將引導您完成使用Spring任務調度的步驟。閱讀原文html

1. 你將會構建什麼?

您將構建一個應用程序,該應用程序使用Spring的@Scheduled 註解每5秒打印一次當前時間。java

 2. 你將須要準備什麼?

3. 如何實現這個指南?

像大多數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 =「...」)表達式來執行更復雜的任務計劃。

4.啓用計劃

雖然計劃任務能夠嵌入到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是一個方便的註釋,它增長了如下全部內容:

  • @Configuration將類標記爲應用程序上下文的bean定義的來源。
  • @EnableAutoConfiguration通知Spring Boot根據類路徑設置,其餘bean和各類屬性設置開始添加bean。
  • 一般你會爲Spring MVC應用程序添加@EnableWebMvc,但Spring Boot在類路徑中看到spring-webmvc時會自動添加。 這將該應用程序標記爲Web應用程序並激活關鍵行爲,例如設置DispatcherServlet。
  • @ComponentScan告訴Spring在hello包中查找其餘組件,配置和服務,以便找到控制器。

main()方法使用Spring Boot的SpringApplication.run()方法啓動應用程序。 你有沒有注意到沒有一行XML? 沒有web.xml文件。 這個Web應用程序是100%純Java,您沒必要處理配置任何管道或基礎設施。

@EnableScheduling確保建立後臺任務執行程序。 沒有它,沒有任何計劃。

5. 編譯一個可執行的Jar

您可使用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秒觸發一次:

源碼:點擊查看

相關文章
相關標籤/搜索