spring SftpOutboundGateway -动态传递本地目录

eaf3rand  于 2023-02-15  发布在  Spring
关注(0)|答案(1)|浏览(124)

我有下面的代码片段从远程服务器下载文件。我想更新它更通用,所以一个目录的文件应该下载(localDirectory)可以作为一个参数传递。是否有可能以某种方式更新网关的方法或扩展处理程序来配置它?

@Bean
    @ServiceActivator(inputChannel = "channel")
    public MessageHandler handler() {
        SftpOutboundGateway handler = new SftpOutboundGateway(sftpSessionFactory(), "get", "payload");
        handler.setLocalDirectory("/folder"); //can this be pointed dynamically when downloading a file?
        return handler;
    }

    @MessagingGateway
    public interface TestGateway{
         @Gateway(requestChannel = "channel")
         File getFile(String filePath);
    }
umuewwlo

umuewwlo1#

为此,我们建议使用一个基于Spel的选项来计算运行时请求消息中的值。请参考以下用例:

/**
 * Specify a SpEL expression to evaluate the directory path to which remote files will
 * be transferred.
 * @param localDirectoryExpression the SpEL to determine the local directory.
 * @since 5.0
 */
public void setLocalDirectoryExpressionString(String localDirectoryExpression) {

因此,可以在您的网关中按如下方式配置此服务器:

handler.setLocalDirectoryExpressionString("headers.my_local_directory");

为方便起见,EvaluationContext中还提供了一个#remoteDirectory SpEL变量。
更多信息请参见文档:
https://docs.spring.io/spring-integration/reference/html/spel.html#spel

相关问题