Spring integration Spring集成SftpOutboundChannelAdapter-如何在运行时传入ftp参数

Spring integration Spring集成SftpOutboundChannelAdapter-如何在运行时传入ftp参数,spring-integration,sftp,spring-integration-sftp,Spring Integration,Sftp,Spring Integration Sftp,我需要使用Spring integration的sftp适配器构建一个独立的api,但是调用方将传入sftp连接参数(主机、用户、pwd等),因此我无法在Spring上下文xml中初始化它们。我正在寻找关于不需要在每次调用时拆卸和重新创建应用程序上下文的最佳方法的建议。现在是我的上下文xml,我想将DefaultSftpSessionFactory参数外部化 <bean id="sftpSessionFactory" class="org.springframework.integrati

我需要使用Spring integration的sftp适配器构建一个独立的api,但是调用方将传入sftp连接参数(主机、用户、pwd等),因此我无法在Spring上下文xml中初始化它们。我正在寻找关于不需要在每次调用时拆卸和重新创建应用程序上下文的最佳方法的建议。现在是我的上下文xml,我想将DefaultSftpSessionFactory参数外部化

<bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
    <property name="host" value="${host}" />
    <property name="port" value="${serverport}" />
    <property name="user" value="${username}" />
    <property name="password" value="${password}" />
    <property name="allowUnknownKeys" value="true" />
</bean>
<int:channel id="inputChannel" />
<int-sftp:outbound-channel-adapter id="sftpOutboundAdapter"
    session-factory="sftpSessionFactory"
    channel="inputChannel"
    charset="UTF-8"
    remote-file-separator="/"
    remote-directory="/accounts/12026622/Reports/" 
    use-temporary-file-name="false"
    mode="REPLACE"
    remote-filename-generator-expression="payload.getName() + '-foo'"      />       

请参阅

它使用动态路由器为每个新目标创建一个新的迷你(参数化)应用程序上下文,并缓存它们以供重用

这很简单;示例使用XML;如果您喜欢Java配置,并对入站邮件适配器使用类似的技术

如果出于某种原因您不想使用此技术,另一个选项是将与自定义的
SessionFactoryLocator
一起使用,它可以动态创建会话工厂

请参阅

它使用动态路由器为每个新目标创建一个新的迷你(参数化)应用程序上下文,并缓存它们以供重用

这很简单;示例使用XML;如果您喜欢Java配置,并对入站邮件适配器使用类似的技术


如果出于某种原因您不想使用此技术,另一个选项是将与自定义的
SessionFactoryLocator
一起使用,它可以动态创建会话工厂

也看到这个。现在,您可以在运行时配置整个流。正如您希望FTPGary一样-是否有使用SessionFactoryLocator的DelegatingSessionFactory的示例?我不知道,但将主机/端口/凭据添加到消息头并在工厂定位器中使用它们并不困难。我参加了本周的SpringOne平台会议;如果你在这里添加评论来提醒我,我可以在下周创建一个例子。也可以看到这个。现在,您可以在运行时配置整个流。正如您希望FTPGary一样-是否有使用SessionFactoryLocator的DelegatingSessionFactory的示例?我不知道,但将主机/端口/凭据添加到消息头并在工厂定位器中使用它们并不困难。我参加了本周的SpringOne平台会议;如果你在这里添加评论来提醒我,我可以在下周创建一个示例。