ItemReader
虽然概念很简单,但ItemReader是提供来自多个
不同类型的输入。最常见的示例包括:
-
平面文件:平面文件项读取器从平面文件中读取数据行,通常 描述其数据字段由文件中的固定位置定义或分隔的记录 通过一些特殊字符(如逗号)。
-
XML:XML
ItemReaders独立于用于解析的技术处理 XML, 映射和验证对象。输入数据允许验证 XML 文件 针对 XSD 架构。 -
Database:访问数据库资源以返回可映射到 对象进行处理。默认 SQL
ItemReaderimplementations 调用RowMapper要返回对象,请跟踪当前行(如果需要重新启动),请存储 Basic 统计信息,并提供一些事务增强功能,稍后将对此进行说明。
还有更多可能性,但本章我们将重点介绍基本的可能性。一个
所有可用的完整列表ItemReader实现可以在附录 A 中找到。
ItemReader是泛型
input作,如以下接口定义所示:
public interface ItemReader<T> {
T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException;
}
这readmethod 定义了ItemReader.调用它
返回一个项目或null如果没有更多项目。一个项目可能表示
文件、数据库中的一行或 XML 文件中的元素。通常预期
这些对象将映射到可用的域对象(例如Trade,Foo或其他),但
是合同中没有要求这样做的。
预计ItemReaderinterface 仅转发。
但是,如果底层资源是事务性的(例如 JMS 队列),则调用read可能会在 rollback 场景中的后续调用中返回相同的 logical item。是的
还值得注意的是,缺少 Item 来处理ItemReader不会导致
异常。例如,数据库ItemReader配置了
返回 0 个结果的 query 返回null在第一次调用read.