文件转换器
要将从文件系统读取的数据转换为对象,反之亦然,你需要做一些工作。与 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
。即使没有其他用途,这也可能对调试有用(考虑将其与线缆分流器一起使用)。
要配置文件特定的转换器,可以使用 file
命名空间中的相应元素,如下例所示
<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
。