[SpringBoot] コピペでできる3ステップお手軽バッチ処理
はじめに
SpringBootでバッチ処理をしてみようと思い、SpringBatchを調べたのですが、もっとお手軽な方法がありましたのでご紹介します。
環境
Spring Tool Suite 3.8.0
手順
1ステップ
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class SpringBootPracticeApplication { public static void main(String[] args) { SpringApplication.run(SpringBootPracticeApplication.class, args); } }
@EnableSchedulingを記述して定期実行を有効にします。
2ステップ
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class BatchProcessing { @Autowired BusinessLogic businessLogic; @Scheduled(initialDelay = 10000, fixedDelay = 10000) public void fixedRate(){ businessLogic.execute(); } }
定期実行したいメソッドに@Scheduledを記述します。 initialDelayは起動後、何秒後にメソッドを実行するのかを指定、fixedDelayは前回の実行終了後、何秒後にメソッドを実行するかを指定します。
fixedRateと書けば前回の実行開始時点から何秒後に実行するかを指定することができます。
11行目にcronの時刻を指定することも可能です。
@Scheduled(cron = "0 0 * * * *", zone = "Asia/Tokyo")
このように書けば、毎日0時0分に実行されるバッチ処理を書くことが可能です。
3ステップ
import org.springframework.stereotype.Component; @Component public class BusinessLogic { public void execute(){ System.out.println("running"); } }
実行させたい処理を書いたクラスに@Componentをつけて、使用するクラスでは@Autowiredでメンバーに注入して実行するだけです。
最後に
他にも設定ファイルに書いたスケジュールを実行する機能もあるようなので機会があれば試してみようと思います。
参考
http://qiita.com/rubytomato@github/items/4f0c64eb9a24eaceaa6e