1.概要

シングルスレッド実行では不十分な場合は、

org.springframework.scheduling.annotation

パッケージのアノテーションを使用できます。

この簡単なチュートリアルでは、Spring Scheduling Annotationsについて説明します。

2.

@ EnableAsync

このアノテーションで、Springの非同期機能を有効にすることができます。


@ Configuration

と一緒に使用する必要があります。

@Configuration
@EnableAsync
class VehicleFactoryConfig {}

非同期呼び出しを有効にしたので、

@ Async

を使用してそれをサポートするメソッドを定義できます。

3.

@ EnableScheduling

このアノテーションを使用すると、アプリケーションでスケジューリングを有効にできます。

また、それを

@ Configuration

と組み合わせて使用​​する必要があります。

@Configuration
@EnableScheduling
class VehicleFactoryConfig {}

その結果、

@ Scheduled

を使用してメソッドを定期的に実行できるようになりました。

4.

@非同期

  • 別のスレッドで** 実行したいメソッドを定義することができるので、それらを非同期に実行します。

これを実現するために、メソッドに

@ Async

というアノテーションを付けることができます。

@Async
void repairCar() {
   //...
}

このアノテーションをクラスに適用すると、すべてのメソッドは非同期に呼び出されます。


@ EnableAsync

またはXML設定を使用して、このアノテーションが機能するように非同期呼び出しを有効にする必要があることに注意してください。


@ Async

に関する詳細は

この記事

にあります。

5.

@予定

  • 定期的に実行する** メソッドが必要な場合は、このアノテーションを使用できます。

@Scheduled(fixedRate = 10000)
void checkVehicle() {
   //...
}

これを使って

固定間隔

でメソッドを実行することも、

cronのような式

で微調整することもできます。


@ Scheduled

は、Java 8の繰り返しアノテーション機能を利用します。つまり、メソッドに複数回マークを付けることができます。

@Scheduled(fixedRate = 10000)
@Scheduled(cron = "0 **  **  **  **  MON-FRI")
void checkVehicle() {
   //...
}


@ Scheduled

でアノテーションが付けられたメソッドは

void

戻り型を持つべきであることに注意してください。

さらに、このアノテーションのスケジューリングを有効にする必要があります。たとえば、@ @ EnableScheduling__またはXML設定を使用します。

スケジューリングの詳細については、リンク:/spring-schedule-tasks[この記事]を参照してください。

6.

@スケジュール

このアノテーションを使用して、複数の

@ Scheduled

ルールを指定できます。

@Schedules({
  @Scheduled(fixedRate = 10000),
  @Scheduled(cron = "0 **  **  **  **  MON-FRI")
})
void checkVehicle() {
   //...
}

Java 8以降、上記のように注釈の繰り返し機能を使用して同じことを実現できることに注意してください。

7.まとめ

この記事では、最も一般的なSpringスケジューリング注釈の概要を見ました。

いつものように、例はhttps://github.com/eugenp/tutorials/tree/master/spring-boot-mvc[GitHubで利用可能]にあります。




  • «** 前へ