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

ItemReader

虽然是一个简单的概念,但ItemReader是提供来自许多数据的手段 不同类型的输入。最一般的例子包括:spring-doc.cadn.net.cn

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

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

  • 数据库:访问数据库资源以返回可映射到 要处理的对象。默认 SQLItemReader实现调用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;

}

read方法定义了ItemReader.称呼它 返回一个项目或null如果没有更多物品。项目可能表示 文件、数据库中的行或 XML 文件中的元素。一般预计 这些被映射到可用的域对象(例如Trade,Foo,或其他),但在那里 合同中没有要求这样做。spring-doc.cadn.net.cn

预计ItemReader接口仅转发。 但是,如果底层资源是事务性的(例如 JMS 队列),则调用read在回滚方案中,可能会在后续调用中返回相同的逻辑项。是的 还值得注意的是,缺乏要处理的项目ItemReader不会导致 异常。例如,数据库ItemReader配置了 返回 0 结果的查询返回null在第一次调用read.spring-doc.cadn.net.cn