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 檔案中的一個元素。通常期望這些項被對映到可用的領域物件(例如 Trade、Foo 或其他),但契約中沒有要求這樣做。
ItemReader 介面的實現預計是隻前進的。但是,如果底層資源是事務性的(例如 JMS 佇列),則在回滾場景中,後續呼叫 read 可能會返回相同的邏輯項。還需要注意的是,ItemReader 沒有可處理的項不會導致丟擲異常。例如,配置了返回 0 結果的查詢的資料庫 ItemReader 在第一次呼叫 read 時會返回 null。