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.