配置 JobLauncher
-
Java
-
XML
当您使用@EnableBatchProcessing
一个JobRegistry
为您提供。
本节介绍如何配置您自己的。
最基本的实现JobLauncher
接口是TaskExecutorJobLauncher
.
它唯一必需的依赖项是JobRepository
(需要获得执行)。
-
Java
-
XML
以下示例显示了TaskExecutorJobLauncher
在 Java 中:
Java 配置
...
@Bean
public JobLauncher jobLauncher() throws Exception {
TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher();
jobLauncher.setJobRepository(jobRepository);
jobLauncher.afterPropertiesSet();
return jobLauncher;
}
...
以下示例显示了TaskExecutorJobLauncher
在 XML 中:
XML 配置
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.TaskExecutorJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>
一旦获得 JobExecution,它就会传递给execute 的Job
,最终返回JobExecution
调用者,作为下图显示:

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

图 2.异步作业Starters序列
您可以配置TaskExecutorJobLauncher
要通过配置TaskExecutor
.
-
Java
-
XML
以下 Java 示例配置了TaskExecutorJobLauncher
立即返回:
Java 配置
@Bean
public JobLauncher jobLauncher() {
TaskExecutorJobLauncher jobLauncher = new TaskExecutorJobLauncher();
jobLauncher.setJobRepository(jobRepository());
jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor());
jobLauncher.afterPropertiesSet();
return jobLauncher;
}
以下 XML 示例配置了TaskExecutorJobLauncher
立即返回:
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>
您可以使用弹簧的任何实现TaskExecutor
接口来控制作业的异步方式 执行。