如何在文件内容上使用Spring Integration转换器,然后归档文件

时间:2013-05-07 14:08:06

标签: spring-integration

我是Spring Integration的新用户,想要用它来处理一些文件。我的问题是我不知道使用消息转换器并随后归档文件(假设没有异常发生)。

问题出现是因为我们不知道负责处理文件内容的类是应该接收文件还是仅接收文件的内容。

提供给我的意见是它应该接收整个文件,然后返回文件以便存档。

有更好的方法吗?具体来说,我不知道使用文件到字符串变换器是否意味着我只有文件内容而不是文件,因此可以存档。

看来我的问题有点像这个问题here中所解释的那样。

2 个答案:

答案 0 :(得分:3)

FileToStringTransformer使原始文件在邮件标题中可用...

        Message<?> transformedMessage = MessageBuilder.withPayload(result)
                .copyHeaders(message.getHeaders())
                .setHeaderIfAbsent(FileHeaders.ORIGINAL_FILE, file)
                .setHeaderIfAbsent(FileHeaders.FILENAME, file.getName())
                .build();

文字标题名称为file_originalFile

因此,在您的服务处理完内容后,您可以使用简单的转换器

转换输出
<transformer ... expression="headers.file_originalFile" />

或者直接将其归档为......

<service-activator ... expression="headers.file_originalFile.renameTo('/foo/' + headers.file_originalFile.name)" />

答案 1 :(得分:1)

在Spring集成的“官方”示例的基本组中有一个示例,您可能应该看到。 GitHub存储库是this,适合您的示例是this。它使用文件入站通道适配器,文件出站通道适配器和文件到字节变换器来演示二进制和文本文件的复制和处理。希望它有所帮助。