Spring 集成 - 按名称读取文件

Spring Integration - Read file by name

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

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

谢谢

如果我理解正确,你需要使用 <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>

所有这些占位符都应该是您的程序参数,如下所示:

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。在这种情况下,我们对 ContextRefreshedEvent 作出反应 - 当您的 applicationContext 准备好做某事时的主要事件。