Java 構成
Spring 3 は、XML の代わりに Java を使用してアプリケーションを構成する機能をもたらしました。Spring Batch 2.2.0 の時点で、同じ Java 構成を使用してバッチジョブを構成できます。Java ベースの構成には、@EnableBatchProcessing
アノテーションと 2 つのビルダーの 3 つのコンポーネントがあります。
@EnableBatchProcessing
アノテーションは、Spring ファミリーの他の @Enable*
アノテーションと同様に機能します。この場合、@EnableBatchProcessing
は、バッチジョブを構築するための基本構成を提供します。この基本構成内で、StepScope
および JobScope
のインスタンスが作成され、多数の Bean がオートワイヤーできるようになります。
JobRepository
:jobRepository
という名前の BeanJobLauncher
:jobLauncher
という名前の BeanJobRegistry
:jobRegistry
という名前の BeanJobExplorer
:jobExplorer
という名前の BeanJobOperator
:jobOperator
という名前の Bean
デフォルトの実装は、前のリストに記載されている Bean を提供し、DataSource
および PlatformTransactionManager
をコンテキスト内の Bean として提供する必要があります。データソースとトランザクションマネージャーは、JobRepository
および JobExplorer
インスタンスによって使用されます。デフォルトでは、dataSource
という名前のデータソースと transactionManager
という名前のトランザクションマネージャーが使用されます。@EnableBatchProcessing
アノテーションの属性を使用して、これらの Bean をカスタマイズできます。次の例は、カスタムデータソースとトランザクションマネージャーを提供する方法を示しています。
@Configuration
@EnableBatchProcessing(dataSourceRef = "batchDataSource", transactionManagerRef = "batchTransactionManager")
public class MyJobConfiguration {
@Bean
public DataSource batchDataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true).build();
}
@Bean
public JdbcTransactionManager batchTransactionManager(DataSource dataSource) {
return new JdbcTransactionManager(dataSource);
}
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("myJob", jobRepository)
//define job flow as needed
.build();
}
}
@EnableBatchProcessing アノテーションが必要な構成クラスは 1 つだけです。クラスにアノテーションを付けると、前述のすべての構成が完了します。 |
v5.0 から始めて、ベースインフラストラクチャ Bean を構成する代替のプログラムによる方法が DefaultBatchConfiguration
クラスを通じて提供されます。このクラスは、@EnableBatchProcessing
によって提供されるものと同じ Bean を提供し、バッチジョブを構成するための基本クラスとして使用できます。次のスニペットは、その使用方法の典型的な例です。
@Configuration
class MyJobConfiguration extends DefaultBatchConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("job", jobRepository)
// define job flow as needed
.build();
}
}
データソースとトランザクションマネージャーは、アプリケーションコンテキストから解決され、ジョブリポジトリとジョブエクスプローラーに設定されます。必要な setter をオーバーライドすることにより、任意のインフラストラクチャ Bean の構成をカスタマイズできます。次の例は、たとえば文字エンコーディングをカスタマイズする方法を示しています。
@Configuration
class MyJobConfiguration extends DefaultBatchConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("job", jobRepository)
// define job flow as needed
.build();
}
@Override
protected Charset getCharset() {
return StandardCharsets.ISO_8859_1;
}
}
@EnableBatchProcessing は DefaultBatchConfiguration と一緒に使用しないでください。@EnableBatchProcessing を介して Spring Batch を構成する宣言的な方法を使用するか、DefaultBatchConfiguration を継承するプログラムによる方法を使用する必要がありますが、両方の方法を同時に使用することはできません。 |