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