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