spring集成http出站适配器无法解析属性

时间:2015-07-14 00:09:09

标签: spring-integration

我们使用http出站适配器来发出http get请求,我们想要从属性文件中读取URL,因为它从envt变为envt。我们还使用消息有效负载向该url附加了一些其他路径,但是它给了我们这个错误消息"引起:java.lang.IllegalArgumentException:Map没有URL"的值。我们所需要的只是从属性文件中读取基本URL并生成带有效负载的最终URL。

这是我们的示例配置看起来像

    <int-http:outbound-gateway request-channel="requestChannel"
                           url="${url}/{payload}"
                           http-method="GET"
                           expected-response-type="java.lang.String"
                           >

</int-http:outbound-gateway>

1 个答案:

答案 0 :(得分:2)

实际上,您网址中的{payload} URI变量,无法自动解析。看看它是如何工作的:

UriComponentsBuilder.fromUriString(uri).buildAndExpand(uriVariables)

这些URI变量的uriVariablesMap

因此,在您的情况下,预期的配置必须如下:

<int-http:outbound-gateway request-channel="requestChannel"
                       url="${url}/{payload}"
                       http-method="GET"
                       expected-response-type="java.lang.String">
       <int-http:uri-variable name="payload" expression="payload"/>
</int-http:outbound-gateway>

您可以在Reference Manual中找到更多信息。