此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Batch 文档 5.2.2! |
配置 JobOperator
最基本的实现JobOperator
接口是TaskExecutorJobOperator
.
它只需要两个依赖项:JobRepository
和JobRegistry
.
-
Java
-
XML
以下示例显示了TaskExecutorJobLauncher
在 Java 中:
Java 配置
...
@Bean
public JobOperator jobOperator(JobRepository jobRepository, JobRegistry jobRegistry) throws Exception {
TaskExecutorJobJobOperator jobOperator = new TaskExecutorJobOperator();
jobOperator.setJobRepository(jobRepository);
jobOperator.setJobRegistry(jobRegistry);
jobOperator.afterPropertiesSet();
return jobOperator;
}
...
以下示例显示了TaskExecutorJobOperator
在 XML 中:
XML 配置
<bean id="jobOperator" class="org.springframework.batch.core.launch.support.TaskExecutorJobOperator">
<property name="jobRepository" ref="jobRepository" />
<property name="jobRegistry" ref="jobRegistry" />
</bean>
一旦获得 JobExecution,它就会传递给
execute 方法的Job
,最终返回JobExecution
对调用方,作为
下图显示:

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

图 2.异步作业Starters序列
您可以配置TaskExecutorJobOperator
要通过配置TaskExecutor
.
-
Java
-
XML
以下 Java 示例配置了TaskExecutorJobOperator
立即返回:
Java 配置
@Bean
public JobOperator jobOperator(JobRepository jobRepository, JobRegistry jobRegistry) throws Exception {
TaskExecutorJobJobOperator jobOperator = new TaskExecutorJobOperator();
jobOperator.setJobRepository(jobRepository);
jobOperator.setJobRegistry(jobRegistry);
jobOperator.setTaskExecutor(new SimpleAsyncTaskExecutor());
jobOperator.afterPropertiesSet();
return jobOperator;
}
以下 XML 示例配置了TaskExecutorJobOperator
立即返回:
XML 配置
<bean id="jobOperator" class="org.springframework.batch.core.launch.support.TaskExecutorJobOperator">
<property name="jobRepository" ref="jobRepository" />
<property name="jobRegistry" ref="jobRegistry" />
<property name="taskExecutor">
<bean class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
</property>
</bean>
您可以使用 Spring 的任何实现TaskExecutor
接口来控制作业的异步方式
执行。