配置 JobLauncher

当您使用@EnableBatchProcessing一个JobRegistry为您提供。 本节介绍如何配置您自己的spring-doc.cadn.net.cn

最基本的JobLauncherinterface 是TaskExecutorJobLauncher. 它唯一需要的依赖项是JobRepository(需要执行)。spring-doc.cadn.net.cn

以下示例显示了TaskExecutorJobLauncher在 Java 中:spring-doc.cadn.net.cn

Java 配置
...
@Bean
public JobLauncher jobLauncher() throws Exception {
	TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher();
	jobLauncher.setJobRepository(jobRepository);
	jobLauncher.afterPropertiesSet();
	return jobLauncher;
}
...

以下示例显示了TaskExecutorJobLauncher在 XML 中:spring-doc.cadn.net.cn

XML 配置
<bean id="jobLauncher"
      class="org.springframework.batch.core.launch.support.TaskExecutorJobLauncher">
    <property name="jobRepository" ref="jobRepository" />
</bean>

获取 JobExecution 后,它会传递给 execute 方法Job,最终返回JobExecution作为 下图显示了:spring-doc.cadn.net.cn

Job Launcher 序列
图 1.Job Launcher 序列

该序列简单明了,从计划程序启动时效果很好。然而 尝试从 HTTP 请求启动时出现问题。在这种情况下,启动 需要异步完成,以便TaskExecutorJobLauncher立即返回到其 访客。这是因为让 HTTP 请求保持打开状态并不是一个好的做法 长时间运行的进程(如批处理作业)所需的时间。下图显示了 示例序列:spring-doc.cadn.net.cn

异步作业Starters序列
图 2.异步 Job Launcher 序列

您可以配置TaskExecutorJobLauncher要允许这种情况,请配置TaskExecutor.spring-doc.cadn.net.cn

以下 Java 示例配置了TaskExecutorJobLauncher要立即返回:spring-doc.cadn.net.cn

Java 配置
@Bean
public JobLauncher jobLauncher() {
	TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher();
	jobLauncher.setJobRepository(jobRepository());
	jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor());
	jobLauncher.afterPropertiesSet();
	return jobLauncher;
}

以下 XML 示例配置了TaskExecutorJobLauncher要立即返回:spring-doc.cadn.net.cn

XML 配置
<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用于控制作业异步方式的接口 执行。spring-doc.cadn.net.cn