跳到主要内容
版本:7.0.2

文件转换器

DeepSeek V3 中英对照 File Transformers

要将从文件系统读取的数据转换为对象,反之亦然,您需要进行一些处理。与 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 时(例如通常使用 Spring Integration 的情况),可以替代使用 AcceptOnceFileListFilter