2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
最新のソフトウェア開発では、スケジュールされたタスクはアプリケーションの自動化と運用効率の重要な要素です。データのバックアップ、システムの健全性チェック、定期的なレポートの生成、またはユーザーのアクティビティによってトリガーされる自動プロセスのいずれであっても、スケジュールされたタスクは不可欠な役割を果たします。これらにより、ビジネス ロジックの継続性とシステムの自己保守機能が保証されます。
従来の開発モデルでは、スケジュールされたタスクを実装するには、多くの場合、オペレーティング システムのスケジュールされたタスク (Linux の crontab など) に依存するか、複雑なビジネス ロジックを記述する必要があります。これらの方法には多くの不都合があります。
Spring Boot は、人気のある Java フレームワークとして、スケジュールされたタスクを実装するためのより洗練された統合された方法を提供します。構成が簡素化され、豊富な API が提供されるため、開発者はスケジュールされたタスク機能をアプリケーションに迅速に統合できます。
Spring Boot に合格しました@EnableScheduling
そして@Scheduled
注釈を使用すると、Spring アプリケーションでスケジュールされたタスクの作成と構成が非常に簡単になります。さらに、Spring Boot は、より高度なスケジュールされたタスク要件のサポートを提供する Spring Task Scheduler との統合も提供します。
Spring Boot は Pivotal チーム (現在は VMware の一部) によって開発されており、Spring フレームワークに基づいたモジュール式の迅速な開発および展開フレームワークです。一連のデフォルト構成を提供することで、Spring アプリケーションの初期セットアップと開発プロセスを簡素化し、開発者の構成作業を軽減することを目的としています。
Spring Boot アプリケーションは次のように起動されます。SpringApplication.run()
メソッドが実装されると、Spring アプリケーション コンテキストが自動的に作成および構成されます。 Spring Boot は、アプリケーションを監視および管理するためのコマンド ライン インターフェイス (CLI) と Actuator エンドポイントも提供します。
Spring Boot に合格しましたspring-boot-starter-parent
依存関係管理を提供し、Maven および Gradle プロジェクトの構成を簡素化します。バージョン番号と依存関係の範囲が事前定義されているため、依存関係の競合とバージョン管理が容易になります。
Spring Boot には、特定の機能を構築するために必要な依存関係を含む多数のプラグインと「スターター」を提供するアクティブなオープン ソース コミュニティがあります。spring-boot-starter-web
RESTful アプリケーションの構築用。
以下に、単純な Spring Boot アプリケーションを作成する手順と、対応するサンプル コードを示します。
spring-boot-starter-web
。import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/")
public String home() {
return "Hello, Spring Boot!";
}
}
java -jar
コマンドが実行されます。Spring Boot は Spring Framework に代わるものではなく、Spring Framework に基づいた迅速な開発方法です。 Spring Framework のすべての機能と柔軟性を維持しながら、Spring アプリケーションを簡単に起動する方法を提供します。
Spring Boot は、最新の Java 開発用に設計されたフレームワークであり、構成を簡素化し、すぐに使用できる一連の機能を提供するため、開発者はインフラストラクチャの構築ではなくビジネス ロジックの実装に集中できます。次の章では、スケジュールされたタスクにおける Spring Boot のアプリケーションを詳しく説明し、その機能を使用して効率的で信頼性の高い自動化タスクを構築する方法を示します。
スケジュールされたタスクは、あらかじめ決められた時間に自動的に実行されるコードまたはプログラムです。これらは 1 回限りまたは定期的に行うことができ、データのバックアップ、通知の送信、スケジュールされたチェックの実行などの自動化されたタスクを実行するために使用されます。
スケジュールされたタスクは、システムを稼働状態に維持し、ビジネス プロセスを自動化するために重要です。手作業による介入を減らし、効率を高め、タスクの適時性と正確性を確保できます。
java.util.Timer
。@Scheduled
。java.util.Timer
スケジュールされたタスクを実装するJava標準ライブラリを使用した例を次に示します。Timer
クラスによって実装された単純なスケジュールされたタスクの例:
import java.util.Timer;
import java.util.TimerTask;
public class SimpleTimerTask {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
};
Timer timer = new Timer();
long delay = 0;
long intervalPeriod = 1000; // 间隔1秒执行一次
timer.scheduleAtFixedRate(task, delay, intervalPeriod);
}
}
Cron 式は、スケジュールされたタスクの実行時間を構成する強力な方法です。以下は、毎日午前 1 時にタスクを実行する cron 式の例です。
0 0 1 * * ?
Spring Boot に合格しました@Scheduled
注釈を使用すると、スケジュールされたタスクの構成と実装が簡素化されます。ここに用途があります@Scheduled
注釈付きの Spring Boot スケジュール済みタスクの例:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
@Scheduled(fixedRate = 5000) // 每5秒执行一次
public void reportCurrentTime() {
System.out.println("当前时间:" System.currentTimeMillis());
}
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
public void scheduleTask() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
}
@Scheduled
注釈@Scheduled
これは、スケジュールされたタスクの実装を簡素化するために Spring によって提供されるアノテーションです。簡単なアノテーション設定を通じて、定期的に実行されるメソッドを作成できます。
@Scheduled
アノテーションの設定fixedRate
: 2 つのタスクの実行間の固定時間間隔 (ミリ秒単位) を指定します。fixedDelay
: 最後のタスクの実行終了から次のタスクの開始までの一定の時間を指定します。initialDelay
: タスクが初めて実行されるまでの遅延時間を指定します。cron
: cron 式を使用して、タスク実行のスケジュールを指定します。fixedRate
次の例は、5 秒ごとに実行されるメソッドを示しています。
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class FixedRateTask {
@Scheduled(fixedRate = 5000)
public void taskWithFixedRate() {
System.out.println("任务执行:" LocalDateTime.now());
}
}
fixedDelay
次の例は、前のタスクの実行が終了してから 1 秒後に実行されるメソッドを示しています。
@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
initialDelay
次の例は、アプリケーションの起動後最初の 10 秒後に実行され、その後 5 秒ごとに実行されるメソッドを示しています。
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
Cron 式では、より複雑な時間設定が可能になり、特定の実行時間を指定できるようになります。次の例は、毎日午前 1 時に実行されるメソッドを示しています。
@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
System.out.println("任务执行:" LocalDateTime.now());
}
スケジュールされたタスクは例外をスローする可能性があります。Spring が提供する@Async
アノテーションを使用してタスクを非同期に実行し、使用します@ExceptionHandler
例外を処理するため。
@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
if (Math.random()