ItemStream
两者都很好地服务于各自的目的,但有一个
他们俩都关心需要另一个接口。一般来说,作为
作为批处理作业范围的一部分,读取器和写入器需要打开、关闭,并且
需要一种持久化状态的机制。该接口用于此目的,
如以下示例所示:ItemReaders
ItemWriters
ItemStream
public interface ItemStream {
void open(ExecutionContext executionContext) throws ItemStreamException;
void update(ExecutionContext executionContext) throws ItemStreamException;
void close() throws ItemStreamException;
}
在描述每种方法之前,我们应该提到 .同时实现的 的 客户端应在对 进行任何调用之前调用 ,以便打开任何资源(如文件)或获取连接。类似的
限制适用于实现 .如
第 2 章,如果在 中找到了预期的数据,则可以用来启动
或位于其初始状态以外的位置。相反,调用以确保安全释放 open 期间分配的任何资源。 主要是为了确保当前持有的任何状态都加载到
提供的 .此方法在提交之前调用,以确保
当前状态在提交之前保留在数据库中。ExecutionContext
ItemReader
ItemStream
open
read
ItemWriter
ItemStream
ExecutionContext
ItemReader
ItemWriter
close
update
ExecutionContext
在特殊情况下,an 的客户端是 (来自 Spring
Batch Core),为每个 StepExecution 创建一个,以允许用户
存储特定执行的状态,如果
同样的事情又开始了。对于熟悉 Quartz 的人来说,语义
与 Quartz 非常相似。ItemStream
Step
ExecutionContext
JobInstance
JobDataMap