Spring Integration - 按名称读取文件

时间:2015-01-27 18:29:43

标签: java spring integration spring-boot spring-integration

我想使用Spring Integration按名称读取文件。我知道如何使用带有轮询器的文件适配器。但在这种情况下,我只想按名称读取文件并将其添加到输入通道。

我的应用程序是一个独立的jar,将使用命令行参数调用。其中一个参数是文件名。我也在使用Spring-Boot。只是不知道如何通过读取此文件并将其添加到输入通道来启动处理。我需要自定义网关吗?

由于

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要使用<context:property-placeholder>并配置如下:

<file:inbound-channel-adapter
        channel="input"
        directory="${dir}"
        filename-pattern="${pattern}">
    <poller fixed-delay="${fixedDelay}" time-unit="SECONDS"/>
</file:inbound-channel-adapter>

所有这些占位符都应该是你的程序args,如下所示:

java myMain --dir=/usr/mydir --patter=myfile.name --fixedDelay=1000

<强>更新

然而,不,你不需要<context:property-placeholder> - Spring Boot会为你做到这一点!

更新2

对不起,您的要求仍然不明确。无论怎么回事:

<int-event:inbound-channel-adapter channel="processFileChannel"
    event-types="org.springframework.context.event.ContextRefreshedEvent"
    payload-expression="new java.io.File('${filePath}')"/>

其中filePath再次是命令行参数。来自Spring Boot的属性占位符。

<int-event:inbound-channel-adapter>负责收听ApplicationEvent。在这种情况下,当applicationContext准备好做某事时,我们会对ContextRefreshedEvent - 一个主事件作出反应。