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