エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

SpringBootで定期処理の実装

経緯

RSSリーダーを作ったのだが、フィードの更新が手動なので、自動更新にしたく、いろいろ調べた

実装

@Scheduled で指定できる。

自分は、cronで1時間毎に起動したかったので、下記の通りに実装
コードに下手書きは、流石にないわぁーと思ったので、設定ファイル(application.properties)に記述

@Component
public class AutoUpdateTask {

  @Scheduled(cron = "${update.scheduler.cron}")
  public void allUpdate() {
    // ・・・
  }
}
update.scheduler.cron=0 0 * * * *

設定内容は、0分0秒時に起動するように定義。
そうすることで、1時間毎に起動するはず。

あとは、mainクラス(SpringApplication.runを実行しているクラス)に、@EnableSchedulingをつけるだけ。
最初、起動しないから、定義を何回も見直したけど、スケジューリングが有効になってないことに気づいて台パンした。

感想・雑記

久しぶりにcron書いた気がする。
普段、全く使わないからな。。。

そういえば、実際の開発でも、1回しか使ったこと無いな。。。

この定義したのはいいのだが、確認方法が難しい。。。
実際に動かして試してるんだけど、他に確認方法ないのか?
ユニットテストで確認したいのだが、検索した感じ、見つけられなかった。

参考リンク

https://reasonable-code.com/spring-boot-scheduling-tasks/

Spring Boot @Scheduled アノテーションで定期実行 - 公式サンプルコード

スケジュール機能を使ってみよう編|SpringBootに入門するための助走本(Zenn改訂版)

1時間置きに実行する|cronの設定・書き方🕒