Web系開発メモ

Java, JavaScript, CSS, HTML などの記事を書いています。

SpringBoot入門:タスクのスケジューリング

Spring Boot のスケジューリング機能を使って、一定間隔で処理を実行する方法を書きます。

前提

この記事は、入門記事「JSONを返す」の資源(ビルドファイル、クラス等)を利用しています。必要に応じて参照して頂けると嬉しいです。

手順1. タスクの作成・有効化

記事「JSONを返す」で作成した、アプリ起動クラスにメソッド(タスク)を追加します。それから、@EnableScheduling@Scheduled を使って有効化します。

gssb/src/main/java/gssb/App.java

package gssb;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

@SpringBootApplication
@EnableScheduling
public class App {

  private static final SimpleDateFormat
    fmt = new SimpleDateFormat("HH:mm:ss");
  
  // 5秒ごとに実行されるメソッド。
  @Scheduled(fixedRate = 5000)
  public void reportTime() {
    System.out.println(fmt.format(new Date()));
  }
  
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }
}

手順2. 起動・確認

次のコマンドでアプリを起動します。

gssb > gradle bootRun
(省略)
・・・Started Application in 4.525 seconds (JVM running for 5.188)
17:22:41
17:22:46
17:22:51
(省略)

5秒ごとに時刻が表示されます。

補足

@Scheduled(cron="・・・") を使うと、cron のようなスケジューリングができるようです。

ソースコード

gssb - GitHub
※ プロジェクト名の gssb は、Getting Started Spring Boot の略です。