Spring Batch は、エンタープライズ システムの日常運用に不可欠な堅牢なバッチ アプリケーションの開発を可能にするように設計された軽量で包括的なバッチ フレームワークです。 Spring Batch は、生産性、POJO ベースの開発アプローチ、Spring Framework で人々が知っている一般的な使いやすさの機能を基盤としており、必要に応じて開発者がより高度なエンタープライズ サービスに簡単にアクセスして活用できるようにします。
Batch アプリケーション用のランタイム オーケストレーション ツールを探している場合、または現在および過去の実行を表示するための管理コンソールが必要な場合は、Spring Cloud Data Flow を検討してください。これは、Spring Batch アプリケーションを含むデータ統合ベースのマイクロサービスをデプロイおよび実行するためのオーケストレーション ツールです。
この簡単なチュートリアルでは、Spring Batch で単純なバッチ ジョブを実行するための最小限のプロジェクトをセットアップする方法を示します。
お気に入りの IDE で、新しい Maven ベースの Java 17 以降のプロジェクトを作成し、次の依存関係を追加します。
< dependencies >
< dependency >
< groupId >org.springframework.batch</ groupId >
< artifactId >spring-batch-core</ artifactId >
< version >${LATEST_VERSION}</ version >
</ dependency >
< dependency >
< groupId >org.hsqldb</ groupId >
< artifactId >hsqldb</ artifactId >
< version >${LATEST_VERSION}</ version >
< scope >runtime</ scope >
</ dependency >
</ dependencies >
次に、ジョブ リポジトリで使用されるデータソースとトランザクション マネージャーを定義する構成クラスを作成します。
import javax . sql . DataSource ;
import org . springframework . context . annotation . Bean ;
import org . springframework . context . annotation . Configuration ;
import org . springframework . jdbc . support . JdbcTransactionManager ;
import org . springframework . jdbc . datasource . embedded . EmbeddedDatabaseBuilder ;
@ Configuration
public class DataSourceConfiguration {
@ Bean
public DataSource dataSource () {
return new EmbeddedDatabaseBuilder ()
. addScript ( "/org/springframework/batch/core/schema-hsqldb.sql" )
. build ();
}
@ Bean
public JdbcTransactionManager transactionManager ( DataSource dataSource ) {
return new JdbcTransactionManager ( dataSource );
}
}
このチュートリアルでは、組み込み HSQLDB データベースが作成され、Spring Batch のメタデータ テーブルで初期化されます。
最後に、バッチ ジョブを定義するクラスを作成します。
import org . springframework . batch . core . Job ;
import org . springframework . batch . core . JobParameters ;
import org . springframework . batch . core . Step ;
import org . springframework . batch . core . configuration . annotation . EnableBatchProcessing ;
import org . springframework . batch . core . job . builder . JobBuilder ;
import org . springframework . batch . core . launch . JobLauncher ;
import org . springframework . batch . core . repository . JobRepository ;
import org . springframework . batch . core . step . builder . StepBuilder ;
import org . springframework . batch . repeat . RepeatStatus ;
import org . springframework . context . ApplicationContext ;
import org . springframework . context . annotation . AnnotationConfigApplicationContext ;
import org . springframework . context . annotation . Bean ;
import org . springframework . context . annotation . Configuration ;
import org . springframework . context . annotation . Import ;
import org . springframework . jdbc . support . JdbcTransactionManager ;
@ Configuration
@ EnableBatchProcessing
@ Import ( DataSourceConfiguration . class )
public class HelloWorldJobConfiguration {
@ Bean
public Step step ( JobRepository jobRepository , JdbcTransactionManager transactionManager ) {
return new StepBuilder ( "step" , jobRepository ). tasklet (( contribution , chunkContext ) -> {
System . out . println ( "Hello world!" );
return RepeatStatus . FINISHED ;
}, transactionManager ). build ();
}
@ Bean
public Job job ( JobRepository jobRepository , Step step ) {
return new JobBuilder ( "job" , jobRepository ). start ( step ). build ();
}
public static void main ( String [] args ) throws Exception {
ApplicationContext context = new AnnotationConfigApplicationContext ( HelloWorldJobConfiguration . class );
JobLauncher jobLauncher = context . getBean ( JobLauncher . class );
Job job = context . getBean ( Job . class );
jobLauncher . run ( job , new JobParameters ());
}
}
このチュートリアルのジョブは、「Hello world!」を出力する 1 つのステップで構成されています。標準出力に。
これで、 HelloWorldJobConfiguration
クラスのmain
メソッドを実行してジョブを起動できるようになりました。出力は次のようになります。
INFO: Finished Spring Batch infrastructure beans configuration in 8 ms.
INFO: Starting embedded database: url='jdbc:hsqldb:mem:testdb', username='sa'
INFO: No database type set, using meta data indicating: HSQL
INFO: No Micrometer observation registry found, defaulting to ObservationRegistry.NOOP
INFO: No TaskExecutor has been set, defaulting to synchronous executor.
INFO: Job: [SimpleJob: [name=job]] launched with the following parameters: [{}]
INFO: Executing step: [step]
Hello world!
INFO: Step: [step] executed in 10ms
INFO: Job: [SimpleJob: [name=job]] completed with the following parameters: [{}] and the following status: [COMPLETED] in 25ms
このガイドは、フラット ファイルからデータを読み取り、変換し、リレーショナル データベースに書き込む一般的な ETL バッチ ジョブを示す、より現実的なチュートリアルです。 Spring Boot をベースにした Spring Batch プロジェクトです。スタート ガイドは、バッチ サービスの作成にあります。
Spring Batch サンプルには、試してみるサンプルがいくつかあります。
ご質問やサポートリクエストがある場合は、GitHub Discussions で新しいディスカッションを開くか、StackOverflow で質問してください。
質問やサポート リクエストのために、Issue Tracker で問題を作成しないでください。問題トラッカーはバグレポートと機能リクエスト専用にしたいと考えています。
Spring Batch は、GitHub Issues を使用してバグと機能リクエストを記録します。問題を提起したい場合は、以下の推奨事項に従ってください。
重要なバグの場合は、問題報告ガイドラインに詳しく記載されているように、問題を再現するテスト ケースまたはプロジェクトを作成し、問題に添付してください。
当社のセキュリティポリシーをご覧ください。
Github ホーム ページの URL を使用して、git リポジトリのクローンを作成します。
$ git clone [email protected]:spring-projects/spring-batch.git
$ cd spring-batch
Maven は Spring Batch に使用されるビルド ツールです。次のコマンドを使用してプロジェクトをビルドできます。
$ ./mvnw package
すべての統合テストを含む完全なビルドを実行する場合は、次を実行します。
$ ./mvnw verify
一部の統合テストは Docker に基づいているため、完全なビルドを実行する前に Docker が起動して実行されていることを確認してください。
リファレンス ドキュメントを生成するには、次のコマンドを実行します。
$ cd spring-batch-docs
$ ../mvnw antora:antora
リファレンスドキュメントはspring-batch-docs/target/anotra/site
にあります。
Docker コンテナーでプロジェクトをビルドする場合は、次のように進めることができます。
$> docker run -it --mount type=bind,source="$(pwd)",target=/spring-batch maven:3-openjdk-17 bash
#> cd spring-batch
#> ./mvnw package
これにより、以前に複製したソース コードがコンテナ内のホストにマウントされます。コンテナ内のソース コードのコピーで作業する場合 (ホストへの副作用はありません)、次の手順を実行できます。
$> docker run -it maven:3-openjdk-17 bash
#> git clone https://github.com/spring-projects/spring-batch.git
#> cd spring-batch
#> ./mvnw package
あらゆる種類の寄付を歓迎します。プロジェクトに貢献するには次のような方法があります。
プル リクエストを受け入れる前に、寄稿者の同意書に署名していただく必要があります。寄稿者の同意書に署名しても、メイン リポジトリへのコミット権限が誰にも付与されるわけではありませんが、寄稿を受け入れることができ、寄稿を受け入れた場合には著者のクレジットが得られることを意味します。アクティブなコントリビューターは、コア チームに参加するよう求められ、プル リクエストをマージする機能が与えられる場合があります。
当社の行動規範をご覧ください。
Spring Batch は、Apache 2.0 ライセンスに基づいてリリースされたオープンソース ソフトウェアです。