SpringBoot-スケジューリング
スケジューリングは、特定の期間にタスクを実行するプロセスです。Spring Bootは、Springアプリケーションでスケジューラーを作成するための優れたサポートを提供します。
JavaCron式
Java Cron式は、org.quartz.TriggerのサブクラスであるCronTriggerのインスタンスを構成するために使用されます。Java cron式の詳細については、このリンクを参照してください-
https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
@EnableSchedulingアノテーションは、アプリケーションのスケジューラーを有効にするために使用されます。このアノテーションは、メインのSpringBootアプリケーションクラスファイルに追加する必要があります。
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Scheduledアノテーションは、特定の期間のスケジューラーをトリガーするために使用されます。
@Scheduled(cron = "0 * 9 * * ?")
public void cronJobSch() throws Exception {
}
以下は、毎日午前9時から午前9時59分まで、毎分タスクを実行する方法を示すサンプルコードです。
package com.tutorialspoint.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class Scheduler {
@Scheduled(cron = "0 * 9 * * ?")
public void cronJobSch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Java cron job expression:: " + strDate);
}
}
次のスクリーンショットは、アプリケーションが09:03:23に開始され、その時点から1分ごとにcronジョブスケジューラタスクが実行されたことを示しています。
固定金利
固定レートスケジューラは、特定の時間にタスクを実行するために使用されます。前のタスクの完了を待ちません。値はミリ秒単位である必要があります。サンプルコードをここに示します-
@Scheduled(fixedRate = 1000)
public void fixedRateSch() {
}
アプリケーションの起動から毎秒タスクを実行するためのサンプルコードを次に示します-
package com.tutorialspoint.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class Scheduler {
@Scheduled(fixedRate = 1000)
public void fixedRateSch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Fixed Rate scheduler:: " + strDate);
}
}
09:12:00に開始され、その後は1つおきの固定レートスケジューラタスクが実行されたアプリケーションを示す次のスクリーンショットを確認してください。
固定遅延
固定遅延スケジューラは、特定の時間にタスクを実行するために使用されます。前のタスクの完了を待つ必要があります。値はミリ秒単位である必要があります。サンプルコードをここに示します-
@Scheduled(fixedDelay = 1000, initialDelay = 1000)
public void fixedDelaySch() {
}
ここで、initialDelayは、初期遅延値の後にタスクが最初に実行されるまでの時間です。
アプリケーションの起動から3秒が経過した後、毎秒タスクを実行する例を以下に示します。
package com.tutorialspoint.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class Scheduler {
@Scheduled(fixedDelay = 1000, initialDelay = 3000)
public void fixedDelaySch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Fixed Delay scheduler:: " + strDate);
}
}
09:18:39に開始され、3秒ごとに、固定遅延スケジューラタスクが毎秒実行されたアプリケーションを示す次のスクリーンショットを確認してください。