Spring Framework:cronによるバッチの時刻起動

java

1.cronとは

Linux等のUnix系のOSには、タスク(コマンド)をスケジューリングして指定の時刻に自動実行させるためのユーティリティ「cron」が用意されています。
cronでは、crontabと呼ばれるファイルに以下のように時刻指定することで、指定した時刻にタスクを動かすことができます。

具体的な記法、及び例については、以下のWikipediaの記事等を参考にしてください。
https://en.wikipedia.org/wiki/Cron

なお、Unix系のOSのcronでは、秒を指定することができません。
秒単位のスケジューリングをしたい場合は、cronから呼び出すコマンド中でsleepコマンド等を使用して制御する必要があります。

2.Spring Frameworkでのcron記法のサポート

Spring Frameworkにもスケジューリングの機能があります。
そして、@EnableSchedulingアノテーションをつけて起動するアプリケーション中で、任意のメソッドに対して@Scheduledアノテーションを用いることで、cronの記法でスケジューリングをすることもできます。

Springのcronの記法は、Unix系のOSのcronの記法と基本的には同じですが、Springのcronでは秒が指定できる点が異なります。
Springの@Scheduledアノテーションでは、以下の順番に指定します。

@Scheduledアノテーションのcron記法についての詳細は、公式ドキュメントを参照してください。

3.Spring Frameworkでのcron記法のサンプルコード

以下、サンプルコードです。5秒おきに任意のメソッドを実行するサンプルです。
今回は、EclipseでSpring Boot STSを使用しています。
また、ビルドツールはGradleを使用しています。

【前準備】

Eclipseで下記操作を行い、プロジェクトを作成する。

  • ファイル→新規→その他→Spring Starter Project
  • 名前に「SpringCronTest」、グループに「com.example」、パッケージに「com.example.demo」を指定し、次へ
  • 何も選択せずに完了

【サンプルコード】

・build.gradle

・SpringCronTest.java

・Run.java

【実行方法】

SpringCronTest.javaを右クリックし、実行→Spring Boot アプリケーションを選択

【実行結果】

4.おわりに

Spring Frameworkには、今回紹介したような便利な機能もサポートされています。
弊社の書籍やスクールでは、JavaやSpring Frameworkの基礎を身につけることで、JavaやSpring Frameworkの便利な機能を使いこなすための下地を身につけることを目指しています。

株式会社サイゼントでは、即戦力のJavaプログラマーを育てるための書籍「絶対にJavaプログラマーになりたい人へ」をKindleで販売しています。

同じく、Spring Frameworkについてきめ細かく解説した別冊も販売中です。


また、上記の書籍をテキストとして用いたプログラミングスクール「サイゼントアカデミー」も開校しています。
このスクールは、受託開発事業・SES事業である弊社が、新入社員向けの研修で培ったノウハウを詰め込んだものです。


ご興味がある方は、上記画像から個別ページにアクセスしてみてください!

コメント

タイトルとURLをコピーしました