こんにちは。サイオステクノロジーの木村です。
jarを定期実行したい場合、作成したjarをcronで動かすのもいいと思いますが、今回はSpring Bootのスケジューリング機能を使った方法をご紹介いたします。
@EnableScheduling
Spring Bootにてスケジューリング機能を有効にするには、EnableSchedulingアノテーションを使用します。
@Scheduled
定期的に実行したいメソッドにScheduledアノテーションをつけ、実行するタイミングを定義します。
・fixedRate:メソッドの実行開始時刻から指定されたミリ秒後に実行します。
・fixedDelay:メソッドの実行完了時刻から指定されたミリ秒後に実行します。
・initialDelay:指定されたミリ秒後に初回の実行を行います。fixedRateやfixedDelayと組み合わせて指定します。
・cron:cron式で実行タイミングを定義します。
上記の場合、起動してから5秒後に初回実行し、その後10秒おきに実行されます。
スケジュールを設定ファイルから取得する場合
実行するタイミングは設定ファイルに記載して取得することもできます。
設定ファイル(application.properties)に以下のように実行スケジュールを記載します。(名称は任意)
左から、秒 分 時 日 月 曜日
上記の場合、毎日9時0分0秒に実行されます。
Scheduledアノテーションにて設定ファイルより値を取得するため以下のように記載します。
実装例
例として、日次(毎朝9時)と月次(毎月1日)でメールを送信する処理を実装します。
とても簡単にスケジューリング機能が実装できました。みなさんも是非つかってみてください。