檔案轉換器

要將從檔案系統讀取的資料轉換為物件,反之亦然,你需要做一些工作。與 FileReadingMessageSource 不同(或程度較輕地與 FileWritingMessageHandler 不同),你可能需要自己的機制來完成這項工作。為此,你可以實現 Transformer 介面。或者,對於入站訊息,你可以擴充套件 AbstractFilePayloadTransformer 類。Spring Integration 提供了一些顯而易見的實現。

請參閱 Transformer 介面的 Javadoc 文件,瞭解哪些 Spring Integration 類實現了它。類似地,你可以檢視 AbstractFilePayloadTransformer 類的 Javadoc 文件,瞭解哪些 Spring Integration 類擴充套件了它。

FileToByteArrayTransformer 擴充套件了 AbstractFilePayloadTransformer,並使用 Spring 的 FileCopyUtilsFile 物件轉換為 byte[]。通常,使用一系列轉換器比將所有轉換放在一個類中更好。在這種情況下,將 File 轉換為 byte[] 可能是一個合乎邏輯的第一步。

FileToStringTransformer 擴充套件了 AbstractFilePayloadTransformer,用於將 File 物件轉換為 String。即使沒有其他用途,這也可能對除錯有用(考慮將其與線纜分流器一起使用)。

要配置檔案特定的轉換器,可以使用 file 名稱空間中的相應元素,如下例所示

<int-file:file-to-bytes-transformer  input-channel="input" output-channel="output"
    delete-files="true"/>

<int-file:file-to-string-transformer input-channel="input" output-channel="output"
    delete-files="true" charset="UTF-8"/>

delete-files 選項向轉換器指示,應在轉換完成後刪除入站檔案。當在多執行緒環境中使用 FileReadingMessageSource 時(例如在使用 Spring Integration 時),這絕不能替代使用 AcceptOnceFileListFilter