此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Batch 文档 5.2.2! |
ItemStream
双ItemReaders
和ItemWriters
很好地服务于他们的个人目的,但有一个
他们两人的共同问题是需要另一个接口。一般来说,作为
在批处理作业作用域的一部分中,需要打开、关闭读取器和写入器
需要一种持久状态的机制。这ItemStream
接口就是为了这个目的,
如以下示例所示:
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
,它可以用来启动
这ItemReader
或ItemWriter
在初始状态以外的位置。相反close
用于确保在打开期间分配的任何资源都被安全释放。update
主要是为了确保当前持有的任何状态都被加载到
提供的ExecutionContext
.在提交之前调用此方法,以确保
当前状态在提交之前保留在数据库中。
在特殊情况下,客户端的ItemStream
是一个Step
(来自Spring
Batch Core),一个ExecutionContext
为每个 StepExecution 创建,以允许用户
存储特定执行的状态,并期望在
一样JobInstance
重新启动。对于熟悉 Quartz 的人来说,语义
与Quartz非常相似JobDataMap
.