Spring Integration - 用于公开重载方法的消息传递网关

时间:2017-10-26 14:38:05

标签: java spring spring-boot spring-integration

我有一个由消息传递网关公开的接口

SomeInterface.java`

interface SomeInterface {
    Outcome doSomething(String p1);
    Outcome doSomething(String p1, String p2);
}

其余-beans.xml文件

<int:gateway id="rest.someRestClient"
             service-interface="SomeInterface">
    <int:method name="doSomething" request-channel="rest.doSomething1"/>
    <int:method name="doSomething" request-channel="rest.doSomething2"/>
</int:gateway>

<int:channel id="rest.someRestClient"/>

<int-http:outbound-gateway url="${rest.http.url}/v1/doSomething1"
                           request-channel="rest.doSomething1"
                           http-method="POST"
                           message-converters="rest.messageConverter"
                           header-mapper="rest.headerMapper"
                           expected-response-type="Outcome">
</int-http:outbound-gateway>

<int-http:outbound-gateway url="${rest.http.url}/v1/doSomething2"
                           request-channel="rest.doSomething2"
                           http-method="POST"
                           message-converters="rest.messageConverter"
                           header-mapper="rest.headerMapper"
                           expected-response-type="Outcome">
</int-http:outbound-gateway>

由于方法过载,我不确定如何公开接口中定义的两种方法。

由于重载方法,上述xml无效。

1 个答案:

答案 0 :(得分:1)

您不能使用XML,而是使用@MessagingGateway注释(以及@Gateway方法来配置通道),以及@IntegrationComponentScan将找到注释和以与XML相同的方式生成网关。

相关问题