文件转换器

要将从文件系统读取的数据转换为对象,反之亦然,您需要做一些工作。与 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

© . This site is unofficial and not affiliated with VMware.