最新の安定バージョンについては、Spring Integration 7.0.1 を使用してください! |
ファイル Transformers
ファイルシステムから読み取ったデータをオブジェクトに変換したり、その逆を行うには、何らかの作業を行う必要があります。FileReadingMessageSource とは異なり、FileWritingMessageHandler ほどではありませんが、ジョブを完了するためにはおそらく独自のメカニズムが必要です。このために、Transformer インターフェースを実装できます。または、受信メッセージ用に AbstractFilePayloadTransformer を継承できます。Spring Integration は、いくつかの明らかな実装を提供します。
Transformer インターフェースの Javadoc を参照して、どの Spring Integration クラスがそれを実装しているかを確認してください。同様に、AbstractFilePayloadTransformer クラスの Javadoc をチェックして、どの Spring Integration クラスがそれを継承しているかを確認できます。
FileToByteArrayTransformer は AbstractFilePayloadTransformer を継承し、Spring の FileCopyUtils を使用して File オブジェクトを byte[] に変換します。多くの場合、すべての変換を単一のクラスに入れるよりも、一連のトランスフォーマーを使用する方が適切です。その場合、File から byte[] への変換は論理的な最初のステップかもしれません。
FileToStringTransformer は AbstractFilePayloadTransformer を継承し、File オブジェクトを String に変換します。何はともあれ、これはデバッグに役立ちます ( ワイヤータップと組み合わせて使用することを検討してください)。
ファイル固有のトランスフォーマーを構成するには、次の例に示すように、ファイル名前空間の適切な要素を使用できます。
<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 を使用する代わりにはなりません。