ItemReader

虽然概念很简单,但ItemReader是提供来自多个 不同类型的输入。最常见的示例包括:spring-doc.cadn.net.cn

  • 平面文件:平面文件项读取器从平面文件中读取数据行,通常 描述其数据字段由文件中的固定位置定义或分隔的记录 通过一些特殊字符(如逗号)。spring-doc.cadn.net.cn

  • XML:XMLItemReaders独立于用于解析的技术处理 XML, 映射和验证对象。输入数据允许验证 XML 文件 针对 XSD 架构。spring-doc.cadn.net.cn

  • Database:访问数据库资源以返回可映射到 对象进行处理。默认 SQLItemReaderimplementations 调用RowMapper要返回对象,请跟踪当前行(如果需要重新启动),请存储 Basic 统计信息,并提供一些事务增强功能,稍后将对此进行说明。spring-doc.cadn.net.cn

还有更多可能性,但本章我们将重点介绍基本的可能性。一个 所有可用的完整列表ItemReader实现可以在附录 A 中找到。spring-doc.cadn.net.cn

ItemReader是泛型 input作,如以下接口定义所示:spring-doc.cadn.net.cn

public interface ItemReader<T> {

    T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException;

}

readmethod 定义了ItemReader.调用它 返回一个项目或null如果没有更多项目。一个项目可能表示 文件、数据库中的一行或 XML 文件中的元素。通常预期 这些对象将映射到可用的域对象(例如Trade,Foo或其他),但 是合同中没有要求这样做的。spring-doc.cadn.net.cn

预计ItemReaderinterface 仅转发。 但是,如果底层资源是事务性的(例如 JMS 队列),则调用read可能会在 rollback 场景中的后续调用中返回相同的 logical item。是的 还值得注意的是,缺少 Item 来处理ItemReader不会导致 异常。例如,数据库ItemReader配置了 返回 0 个结果的 query 返回null在第一次调用read.spring-doc.cadn.net.cn