如何以编程方式创建一个Spring FtpOutboundChannelAdapter?

时间:2015-01-15 22:08:37

标签: spring spring-integration spring-java-config

我有一个Spring启动应用程序,并且我正在尝试坚持使用仅限Java的配置。不要问我关于这种方法的优缺点。我只是不想在Java和XML之间拆分配置。我正在使用Spring Integration并尝试通过FTP发送文件。在XML世界中它看起来像

<int:channel id="pickupChannel"/>

<bean id="ftpSessionFactory"
   class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory"> ... />

<int-ftp:outbound-channel-adapter id="ftpOutputChannel"
        channel="pickupChannel" 
        session-factory="ftpSessionFactory" ...  />

我可以创建DefaultFtpSessionFactory而不会有太多麻烦,但是我找不到要为FtpOutboundChannelAdapter实例化的类。该适配器类似乎不存在。我能找到的最接近的是FtpOutboundChannelAdapterParser。但这是在寻找一些解析的XML。在这里实例化的底层类是什么?我错过了什么吗?看起来Spring正在寻找一个XML定义的bean。 Spring-boot还没有为这个Spring Integration bean做好准备吗?

感谢任何帮助。 安德鲁

1 个答案:

答案 0 :(得分:0)

this answer。自版本4.0起,任何MessageHandler都可以使用@ServiceActivator进行配置。

在这种情况下,处理程序是FileTransferringMessageHandler,需要使用适当配置的FtpRemoteFileTemplate进行配置。

哪个需要会话工厂。

pickupChannel将是DirectChannel

修改

您还应该查看具有FTP一流支持的Java DSL。看看reference docs

具体来说,请参阅this test case