ItemStream

ItemReadersItemWriters很好地服务于他们的个人目的,但有一个 他们俩都关心需要另一个接口。一般来说,作为 作为批处理作业范围的一部分,读取器和写入器需要打开、关闭,并且 需要一种持久化状态的机制。这ItemStreaminterface 就是为了达到这个目的, 如以下示例所示:spring-doc.cadn.net.cn

public interface ItemStream {

    void open(ExecutionContext executionContext) throws ItemStreamException;

    void update(ExecutionContext executionContext) throws ItemStreamException;

    void close() throws ItemStreamException;
}

在描述每种方法之前,我们应该提到ExecutionContext.的客户端ItemReader也实现ItemStream应该调用open在对read,以打开任何资源(如文件)或获取连接。类似的 限制适用于ItemWriter实现ItemStream.如 第 2 章,如果在ExecutionContext,它可用于启动 这ItemReaderItemWriter位于其初始状态以外的位置。相反close以确保安全释放 open 期间分配的所有资源。update主要是为了确保当前持有的任何状态都加载到 提供的ExecutionContext.此方法在提交之前调用,以确保 当前状态在提交之前保留在数据库中。spring-doc.cadn.net.cn

在特殊情况下,客户端的ItemStream是一个Step(来自春季 Batch Core)、一个ExecutionContext为每个 StepExecution 创建,以允许用户 存储特定执行的状态,如果 一样JobInstance将再次启动。对于熟悉 Quartz 的人来说,语义 与 Quartz 非常相似JobDataMap.spring-doc.cadn.net.cn