SpringでScheduling Taskを構築

投稿者: | 2020年2月10日

Springの公式サイト、Getting Started での記述に倣って、Scheduling Taskを構築してみます。

https://spring.io/guides/gs/rest-service/

 

サービスを起動すると、5秒ごとに現在の時刻が表示されるというものです。

 

またこちらの例では、スケジューリングを多少変更し、水曜日の午後8時に起動するように設定したものです。

 

それではこれらのシステムを構築してみましょう。

 

パッケージのダウンロード

Spring Initializrにて、”Artifact” 欄を “scheduling-tasks” とし、”Generate”ボタンを押してダウンロードします。

(もちろんデフォルトの”demo”のままでも、各クラスのパッケージを適切に変更できれば、問題ありません)

 

pom.xmlの編集

チュートリアルによると、pom.xmlの <dependency> タグに、awaitility を追加するよう指示されています。

 

これ自体がなくても動作はしますが、テストクラスを作成し検証する際に、有用となります。

 

コンポーネントの作成

Scheduleを定義したコンポーネントクラスを作成します。

 

@Scheduledアノテーションで fixedRate を 5000ms に定義し、5秒毎に現在時刻を表示しています。

 

 

SpringBootApplication クラスの編集

バックグラウンドでスケジューリングされたタスクを動作させるために、Spring Boot Application クラスを編集します。

 

@EnableSchedulingアノテーションは、バックグランドでのタスク実行を可能にします。

 

実行結果1

実行してみます。コマンドプロンプトを開き、”scheduling-tasks”をカレント・ディレクトリにしてから、次のコマンドを実行すると、冒頭の1つめの画面が得られます。

mvnw spring-boot:run

 

スケジュールをcron形式で設定

タスク実行のトリガを変更してみます。SchedulingTasks.java の @Scheduledアノテーションの記述を、fixedRateからcron方式に変更してみます。

 

cronの記載方式は、”秒 分 時 日 月 曜日”。こちらの例では、毎日21時55分0秒を表しています。

 

実行結果2

再度実行してみます。コマンドプロンプトを開き、再び下記のコマンドを実行すると、冒頭の2つめの画面が得られます。

mvnw spring-boot:run