経緯
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 アノテーションで定期実行 - 公式サンプルコード