JobLauncher
最基本的实现是 SimpleJobLauncher
,它唯一的依赖是通过 JobRepository
获取一个 execution
:
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>
一旦获取到 JobExecution ,那么可以通过执行Job
的方法,最终将JobExecution
返回给调用者:
从调度启动时,整个序列能够很好的直接工作,但是,从HTTP请求中启动则会出现一些问题。在这种场景中,启动任务需要异步操作,让SimpleJobLauncher能够立刻返回结果给调用者,如果让HTTP请求一直等待很长时间知道批处理任务完成获取到执行结果,是很糟糕的操作体验。一个流程如下图所示:
通过配置TaskExecutor
可以很容易的将SimpleJobLauncher
配置成异步操作:
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
<property name="taskExecutor">
<bean class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
</property>
</bean>
TaskExecutor 接口的任何实现都能够用来控制job
的异步执行。