2016-01-13 60 views
2

我试图将XML中的file:outbound-gateway配置转换为Java配置,但无法找到正确的API。如何通过Java配置创建int-file:出站网关

XML:

<file:outbound-gateway directory="file:myDir" 
    request-channel="inFiles" auto-create-directory="true" 
    delete-source-files="true" reply-channel="outFiles"> 
</file:outbound-gateway> 

这是我迄今为止在Java配置。不知道如何设置request-channelreply-channel

@Bean 
public MessageHandler fileOutBoundGateway() { 
    FileWritingMessageHandler gateway = new FileWritingMessageHandler(new File("myDir")); 
    gateway.setDeleteSourceFiles(true); 
    gateway.setAutoCreateDirectory(true); 

    // FIXME need to set request and reply channel 
    return gateway; 
} 

回答

1

request-channelinputChannel)是endpoint的选择。在你的情况下,你只有channelMessageHandler,但仍然没有endpoint

只有你所需要的是service-activator

@Bean 
@ServiceActivator(inputChannel = "input") 
public MessageHandler fileOutBoundGateway() { 
    FileWritingMessageHandler gateway = new FileWritingMessageHandler(new File("myDir")); 
    gateway.setDeleteSourceFiles(true); 
    gateway.setAutoCreateDirectory(true); 
    gateway.setOutputChannel(outputChannel()); 
    return gateway; 
} 

请,发现在Reference Manual更多信息。 另请注意,请致电Java DSL

+0

谢谢。我也需要回复频道。我应该使用哪一个:@ServiceActivator(inputChannel =“in”,outputChannel =“out”)或@Gateway(request-channel =“in”,reply-channel =“out”) –

+0

不,不。请仔细阅读http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/configuration.html#annotations。我已经告诉你,你应该使用'gateway.setOutputChannel()'。它是XML DSL的“回复通道”,但目标'MessageHandler'具有相同的选项并不重要。 –

+0

感谢您的解释。现在有道理。 –