<int:inbound-channel-adapter channel="requestChannel"
expression="''">
<int:poller cron="0 0/2 * * * ?"/>
</int:inbound-channel-adapter>
<int:chain input-channel="requestChannel" output-channel="requestConcactChannel">
<int:header-enricher default-overwrite="true">
<int:header name="Accept" value="application/json" />
<int:header name="OData-MaxVersion" value="4.0" />
<int:header name="OData-Version" value="4.0" />
</int:header-enricher>
<int-http:outbound-gateway
url="#{requestbl.geturl()}"
expected-response-type="java.lang.String" http-method="GET"
header-mapper="headerMapper" >
</int-http:outbound-gateway>
<int:service-activator ref="accountResponseHandler" />
</int:chain>
在此之后,我使用的代码通过出站网关在某些网址上发送请求。我必须动态生成这个url。
requestbl.geturl()返回Url值,但只在加载应用程序时调用一次。我想在每次发送请求时加载它。
答案 0 :(得分:1)
您可以选择其他方式:
<xsd:attribute name="url-expression" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
SpEL Expression resolving to a URL to which the requests should be sent. The resolved
value may include {placeholders} for further evaluation against uri-variables.
]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
这是在运行时针对每个requestMessage
调用的,并且您也可以从该表达式调用任何bean。
所以,你的用例就是这样:
url-expression="@requestbl.geturl()"