文件转换器
要将从文件系统读取的数据转换为对象,反之亦然,您需要做一些工作。与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
时使用AcceptOnceFileListFilter
的替代方法(例如,当您通常使用Spring Integration时)。