文件转换器

要将从文件系统读取的数据转换为对象,反之亦然,您需要做一些工作。与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。如果没有任何其他用途,这对于调试很有用(考虑与线缆监听一起使用)。

要配置特定于文件的转换器,您可以使用文件命名空间中的相应元素,如下例所示

<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时使用AcceptOnceFileListFilter的替代方法(例如,当您通常使用Spring Integration时)。