JobLauncher の構成
Java
XML
@EnableBatchProcessing を使用すると、JobRegistry が提供されます。このセクションでは、独自の構成方法について説明します。
JobLauncher インターフェースの最も基本的な実装は TaskExecutorJobLauncher です。その唯一の必要な依存関係は JobRepository (実行を取得するために必要) です。
Java
XML
次の例は、Java での TaskExecutorJobLauncher を示しています。
...
@Bean
public JobLauncher jobLauncher() throws Exception {
TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher();
jobLauncher.setJobRepository(jobRepository);
jobLauncher.afterPropertiesSet();
return jobLauncher;
}
... 次の例は、XML の TaskExecutorJobLauncher を示しています。
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.TaskExecutorJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean> 取得された JobExecution は Job の execute メソッドに渡され、最終的に次の図に示すように JobExecution が呼び出し元に返されます。

シーケンスは簡単で、スケジューラーから起動するとうまく機能します。ただし、HTTP リクエストから起動しようとすると問題が発生します。このシナリオでは、TaskExecutorJobLauncher がすぐに呼び出し元に戻るように、起動を非同期で行う必要があります。これは、実行時間の長いプロセス (バッチジョブなど) に必要な時間、HTTP リクエストを開いたままにしておくのは適切ではないためです。次の図は、シーケンスの例を示しています。

TaskExecutor を構成することにより、このシナリオを可能にするように TaskExecutorJobLauncher を構成できます。
Java
XML
次の Java の例では、すぐに戻るように TaskExecutorJobLauncher を構成します。
@Bean
public JobLauncher jobLauncher() {
TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher();
jobLauncher.setJobRepository(jobRepository());
jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor());
jobLauncher.afterPropertiesSet();
return jobLauncher;
} 次の XML の例では、すぐに戻るように TaskExecutorJobLauncher を構成しています。
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.TaskExecutorJobLauncher">
<property name="jobRepository" ref="jobRepository" />
<property name="taskExecutor">
<bean class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
</property>
</bean>Spring TaskExecutor インターフェースの任意の実装を使用して、ジョブの非同期実行方法を制御できます。