ファイル Transformers

ファイルシステムから読み取ったデータをオブジェクトに変換したり、その逆を行うには、何らかの作業を行う必要があります。FileReadingMessageSource とは異なり、FileWritingMessageHandler ほどではありませんが、ジョブを完了するためにはおそらく独自のメカニズムが必要です。このために、Transformer インターフェースを実装できます。または、受信メッセージ用に AbstractFilePayloadTransformer を継承できます。Spring Integration は、いくつかの明らかな実装を提供します。

Transformer インターフェースの Javadoc を参照して、どの Spring Integration クラスがそれを実装しているかを確認してください。同様に、AbstractFilePayloadTransformer クラスの Javadoc をチェックして、どの Spring Integration クラスがそれを継承しているかを確認できます。

FileToByteArrayTransformer は AbstractFilePayloadTransformer を継承し、Spring の FileCopyUtils を使用して File オブジェクトを byte[] に変換します。多くの場合、すべての変換を単一のクラスに入れるよりも、一連のトランスフォーマーを使用する方が適切です。その場合、File から byte[] への変換は論理的な最初のステップかもしれません。

FileToStringTransformer extends AbstractFilePayloadTransformer convert a File object to a String. If nothing else, this can be useful for debugging (to consider using it with a 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 の使用に代わるものではありません。