此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Batch 文档 5.2.2spring-doc.cadn.net.cn

ItemStream

ItemReadersItemWriters很好地服务于他们的个人目的,但有一个 他们两人的共同问题是需要另一个接口。一般来说,作为 在批处理作业作用域的一部分中,需要打开、关闭读取器和写入器 需要一种持久状态的机制。这ItemStream接口就是为了这个目的, 如以下示例所示: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用于确保在打开期间分配的任何资源都被安全释放。update主要是为了确保当前持有的任何状态都被加载到 提供的ExecutionContext.在提交之前调用此方法,以确保 当前状态在提交之前保留在数据库中。spring-doc.cadn.net.cn

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