一、ItemReader
ItemReader是Step中对资源的读处理,Spring Batch框架已经提供了各种类型的读实现,包括对文本文件、XML文件、数据库、JMS消息等读的处理。
所有的读操作需要实现org.springframework.batch.item.ItemReader<T>接口。
public interface ItemReader<T> {
T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException;
}
- read():负责从给定的资源中读取可用的数据
二、ItemStream
Spring Batch框架同时提供了另外一个重要的接口org.springframework.batch.item.ItemStream。ItemStream接口定义了读操作与执行上下文ExecutionContext交互的能力。可以将已经读的条数通过该接口存放在执行上下文ExecutionContext中(ExecutionContext中的数据在批处理commit的时候会通过JopRepository持久化到数据库中),这样到Job发生异常重新启动Job的时候,读操作可以跳过已经成功读过的数据,继续从上次出错的地点(可以从执行上下文中获取上次成功读的位置)开始读。
public interface ItemStream {
void open(ExecutionContext var1) throws ItemStreamException;
void update(ExecutionContext var1) throws ItemStreamException;
void close() throws ItemStreamException;
}
- open():open()操作根据参数executionContext打开需要读取资源的stream;可以根据持久化在执行上下文executionContext中的数据重新定位需要读取记录的位置
- update():将需要持久化的数据存放在执行上下文executionContext中
- close():关闭读取的资源
说明:Spring Batch框架提供的读组件均实现了ItemStream接口。