檔案轉換器

若要轉換從檔案系統讀取的資料為物件,以及反向轉換,您需要執行一些工作。與 FileReadingMessageSource 以及在較小程度上與 FileWritingMessageHandler 不同,您可能需要自己的機制來完成這項工作。為此,您可以實作 Transformer 介面。或者,您可以擴充 AbstractFilePayloadTransformer 以用於入站訊息。Spring Integration 提供了一些顯而易見的實作。

請參閱 Transformer 介面的 Javadoc,以查看哪些 Spring Integration 類別實作了它。同樣地,您可以查看 AbstractFilePayloadTransformer 類別的 Javadoc,以查看哪些 Spring Integration 類別擴充了它。

FileToByteArrayTransformer 擴充了 AbstractFilePayloadTransformer,並使用 Spring 的 FileCopyUtilsFile 物件轉換為 byte[]。通常,使用一連串的轉換器比將所有轉換都放在單一類別中更好。在這種情況下,Filebyte[] 的轉換可能是合理的首要步驟。

FileToStringTransformer 擴充了 AbstractFilePayloadTransformer,將 File 物件轉換為 String。如果沒有其他用途,這對於偵錯可能很有用(考慮將其與 wire tap 一起使用)。

若要設定檔案特定的轉換器,您可以使用檔案命名空間中的適當元素,如下列範例所示

<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 選項向轉換器發出訊號,表示它應在轉換完成後刪除入站檔案。這絕不是在使用多執行緒環境(例如,當您一般使用 Spring Integration 時)中使用 FileReadingMessageSource 時,取代使用 AcceptOnceFileListFilter 的方法。