为什么在Spring Integration中没有@OutboundChannelAdapter批注?

时间:2019-02-25 16:42:33

标签: spring-integration

1)我想创建一个HttpRequestExecutingMessageHandler(用于HTTP的出站通道适配器)的bean,并通过@OutboundChannelAdapter之类的注释指定该通道,为什么不能这样做?我想有一些我不理解的设计决定。

2)不使用XML配置文件定义HttpRequestExecutingMessageHandler的建议方法是什么?我必须配置Bean并手动进行设置吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

@ServiceActivator完全涵盖了该功能。与@Transformer不同,它不需要返回值。因此,您的POJO方法可以只是void,并且流程将以类似<outbound-channel-adapter>的方式在XML配置中停止。

但是对于HttpRequestExecutingMessageHandler,我们需要担心一些额外的选择,使其成为单向并停止在那里而无需担心任何HTTP答复。

因此,对于HttpRequestExecutingMessageHandler,您需要声明一个像这样的bean:

@Bean
@ServiceActivator(inputChannel = )
public HttpRequestExecutingMessageHandler httpRequestExecutingMessageHandler() {
    HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler();
    handler.setExpectReply(false)
    return handler;
}

我认为我们仍然需要改进此文档,但是您可以改为查看Java DSL配置:https://docs.spring.io/spring-integration/docs/current/reference/html/#http-java-config。为方便起见,有Http.outboundChannelAdapter()