文件转换器
要将从文件系统读取的数据转换为对象,反之亦然,您需要做一些工作。
与FileReadingMessageSource
在较小程度上FileWritingMessageHandler
,则可能需要自己的机制来完成工作。
为此,您可以实现Transformer
接口。
或者,您可以扩展AbstractFilePayloadTransformer
用于入站消息。
Spring 集成提供了一些明显的实现。
请参阅Javadoc 的Transformer
接口以查看哪些 Spring Integration 类实现了它。
同样,您可以检查Javadoc 的AbstractFilePayloadTransformer
类以查看哪些 Spring Integration 类扩展了它。
FileToByteArrayTransformer
延伸AbstractFilePayloadTransformer
并转换File
object 转换为byte[]
通过使用 Spring 的FileCopyUtils
.
通常,使用一系列 transformer 比将所有转换放在一个类中要好。
在这种情况下,File
自byte[]
转换可能是合乎逻辑的第一步。
FileToStringTransformer
延伸AbstractFilePayloadTransformer
将File
object 设置为String
.
如果不出意外,这对调试很有用(考虑将其与 wire tap 一起使用)。
要配置特定于文件的转换器,可以使用 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
option 向转换器发出信号,表示它应该在转换完成后删除入站文件。
这绝不能替代使用AcceptOnceFileListFilter
当FileReadingMessageSource
正在多线程环境中使用(例如,当您通常使用 Spring 集成时)。