ItemReader

尽管概念简单,ItemReader 是从多种不同类型的输入提供数据的方式。最常见的例子包括:

  • 平面文件:平面文件项目读取器从平面文件中读取数据行,这些文件通常描述记录,其中数据字段由文件中固定位置或某些特殊字符(如逗号)分隔。

  • XML:XML ItemReader 独立于用于解析、映射和验证对象的技术来处理 XML。输入数据允许根据 XSD 模式验证 XML 文件。

  • 数据库:访问数据库资源以返回结果集,这些结果集可以映射到对象进行处理。默认的 SQL ItemReader 实现调用 RowMapper 来返回对象,如果需要重新启动,则跟踪当前行,存储基本统计信息,并提供一些稍后解释的事务增强功能。

还有更多可能性,但本章我们重点介绍基本内容。所有可用 ItemReader 实现的完整列表可在附录 A 中找到。

ItemReader 是通用输入操作的基本接口,如下面的接口定义所示:

public interface ItemReader<T> {

    T read() throws Exception;

}

read 方法定义了 ItemReader 最基本的契约。调用它会返回一个项,如果没有更多项,则返回 null。一个项可以代表文件中的一行、数据库中的一行或 XML 文件中的一个元素。通常期望这些项被映射到可用的领域对象(例如 TradeFoo 或其他),但契约中没有要求这样做。

ItemReader 接口的实现预计是只前进的。但是,如果底层资源是事务性的(例如 JMS 队列),则在回滚场景中,后续调用 read 可能会返回相同的逻辑项。还需要注意的是,ItemReader 没有可处理的项不会导致抛出异常。例如,配置了返回 0 结果的查询的数据库 ItemReader 在第一次调用 read 时会返回 null

© . This site is unofficial and not affiliated with VMware.