@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Import(value=BatchConfigurationSelector.class) public @interface EnableBatchProcessing
Spring Batch 機能を有効にし、<batch:*>
XML 名前空間を使用するのとほぼ同等の @ Configuration クラスでバッチジョブをセットアップするための基本構成を提供します。
@Configuration @EnableBatchProcessing @Import(DataSourceConfiguration.class) public class AppConfig { @Autowired private JobBuilderFactory jobs; @Bean public Job job() { return jobs.get("myJob").start(step1()).next(step2()).build(); } @Bean protected Step step1() { ... } @Bean protected Step step2() { ... } }ユーザーは、
DataSource
をコンテキストで Bean として提供するか、構成クラス自体に BatchConfigurer
を実装する必要があります。@Configuration @EnableBatchProcessing public class AppConfig extends DefaultBatchConfigurer { @Bean public Job job() { ... } @Override protected JobRepository createJobRepository() { ... } ... }ユーザーがコンテキスト内で
DataSource
を提供しない場合、マップベースの JobRepository
が使用されます。コンテキストで複数の DataSource
が定義されている場合、Primary
アノテーションが付けられたものが使用されます(それらのいずれにも Primary
のアノテーションが付けられていない場合は、dataSource
という名前の名前が使用されますが、そうでない場合は UnsatisfiedDependencyException
がスローされます)。@EnableBatchProcessing
アノテーションが必要なのは、構成クラスの 1 つだけであることに注意してください。構成に @EnableBatchProcessing
クラスを作成すると、StepScope
および JobScope
のインスタンスが作成されるため、ステップ内の Bean にはそれぞれ @Scope("step")
および @Scope("job")
を含めることができます。また、コンテキストにいくつかの有用なものを @Autowired
することができます:JobRepository
(Bean 名 "jobRepository" )JobLauncher
(Bean 名 "jobLauncher" )JobRegistry
(Bean 名 "jobRegistry" )JobExplorer
(Bean 名 "jobExplorer" )PlatformTransactionManager
(Bean 名 "transactionManager" )JobBuilderFactory
(Bean 名 "jobBuilders" )StepBuilderFactory
(Bean 名 "stepBuilders" )は、ジョブリポジトリとトランザクションマネージャーをすべてのステップに挿入する必要がないようにするための便宜としてDataSource
がコンテキスト内で提供されない場合は ResourcelessTransactionManager
DataSource
がコンテキスト内で提供される場合、DataSourceTransactionManager
BatchConfigurer
を提供する必要があります。例:@Configuration @EnableBatchProcessing public class AppConfig extends DefaultBatchConfigurer { @Bean public Job job() { ... } @Override public PlatformTransactionManager getTransactionManager() { return new MyTransactionManager(); } ... }構成が
modular=true
として指定されている場合、コンテキストには AutomaticJobRegistrar
も含まれます。ジョブレジストラは、複数のジョブがある場合に構成をモジュール化できます。ジョブ構成を含む個別の子アプリケーションコンテキストを作成し、それらのジョブを登録することにより機能します。ジョブは、Bean 定義名の衝突を心配することなく、ステップおよびその他の依存コンポーネントを作成できます。型 ApplicationContextFactory
の Bean は、ジョブレジストラーに自動的に登録されます。例:@Configuration @EnableBatchProcessing(modular=true) public class AppConfig { @Bean public ApplicationContextFactory someJobs() { return new GenericApplicationContextFactory(SomeJobConfiguration.class); } @Bean public ApplicationContextFactory moreJobs() { return new GenericApplicationContextFactory(MoreJobConfiguration.class); } ... }循環構成の依存関係が発生する可能性があるため、特に
BatchConfigurer
が提供されている場合は、一般に、モジュラー親コンテキスト自体にジョブの @Bean 定義を含めるべきではないことに注意してください。参考までに、上記の最初の例は、次の Spring XML 構成と比較できます。
<batch>
<job-repository />
<job id="myJob">
<step id="step1" .../>
<step id="step2" .../>
</job>
<beans:bean id="transactionManager" .../>
<beans:bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<beans:property name="jobRepository" ref="jobRepository" />
</beans:bean>
</batch>
修飾子と型 | オプションの要素と説明 |
---|---|
boolean | modular 構成を複数のアプリケーションコンテキストにモジュール化するかどうかを示します。 |
public abstract boolean modular
ApplicationContextFactory
を介して個別の(子)コンテキストで提供する必要があります。