使用 url-表达式
Using url-expression
我有一个 spring 集成配置为从 属性 和一些变量构建 url:
<int-http:outbound-gateway
url="${pdf.url}?id={id}&version={version}"
request-factory="int.http.requestFactory"
http-method="GET"
transfer-cookies="false"
header-mapper="fTokenHeaderMapper"
expected-response-type="java.lang.String" >
<int-http:uri-variable name="id" expression="payload.id"/>
<int-http:uri-variable name="version" expression="payload.version"/>
</int-http:outbound-gateway>
现在我想更改它,以便服务器部分 (pdf.url) 可以即时更改,而不仅仅是在启动时更改。为了实现这一点,我已经从 'url' 更改为 'url-expression' 并且像这样:
<int-http:outbound-gateway
url-expression="@configurationService.getConfiguration('pdf.url')?id={id}&version={version}"
request-factory="int.http.requestFactory"
http-method="GET"
transfer-cookies="false"
header-mapper="fTokenHeaderMapper"
expected-response-type="java.lang.String" >
<int-http:uri-variable name="id" expression="payload.id"/>
<int-http:uri-variable name="version" expression="payload.version"/>
</int-http:outbound-gateway>
这条线似乎有效:
url-expression="@configurationService.getConfiguration('pdf.url')"
但是如何以与第一个示例类似的方式包含变量?
从大高度开始,我也将 URI 变量部分移动到 configurationService.getConfiguration()
。阅读 XML 配置会更清晰。
从另一方面看,url-expression
是一个 SpEL 运行时表达式。所以,它的任何不应该是可执行的部分,必须是 literal:
url-expression="@configurationService.getConfiguration('pdf.url') + '?id={id}&version={version}'"
您的配置仅在启动期间读取一次,因此您无法在运行期间更改 pdf.url
的值并期望它会动态更改。
我有一个 spring 集成配置为从 属性 和一些变量构建 url:
<int-http:outbound-gateway
url="${pdf.url}?id={id}&version={version}"
request-factory="int.http.requestFactory"
http-method="GET"
transfer-cookies="false"
header-mapper="fTokenHeaderMapper"
expected-response-type="java.lang.String" >
<int-http:uri-variable name="id" expression="payload.id"/>
<int-http:uri-variable name="version" expression="payload.version"/>
</int-http:outbound-gateway>
现在我想更改它,以便服务器部分 (pdf.url) 可以即时更改,而不仅仅是在启动时更改。为了实现这一点,我已经从 'url' 更改为 'url-expression' 并且像这样:
<int-http:outbound-gateway
url-expression="@configurationService.getConfiguration('pdf.url')?id={id}&version={version}"
request-factory="int.http.requestFactory"
http-method="GET"
transfer-cookies="false"
header-mapper="fTokenHeaderMapper"
expected-response-type="java.lang.String" >
<int-http:uri-variable name="id" expression="payload.id"/>
<int-http:uri-variable name="version" expression="payload.version"/>
</int-http:outbound-gateway>
这条线似乎有效:
url-expression="@configurationService.getConfiguration('pdf.url')"
但是如何以与第一个示例类似的方式包含变量?
从大高度开始,我也将 URI 变量部分移动到 configurationService.getConfiguration()
。阅读 XML 配置会更清晰。
从另一方面看,url-expression
是一个 SpEL 运行时表达式。所以,它的任何不应该是可执行的部分,必须是 literal:
url-expression="@configurationService.getConfiguration('pdf.url') + '?id={id}&version={version}'"
您的配置仅在启动期间读取一次,因此您无法在运行期间更改 pdf.url
的值并期望它会动态更改。