spring上下文文件中已经定义了一个出站网关,我必须对其进行覆盖。修改文件本身不是一个选择,因为这是一个只读文件,它是基本代码的一部分,无法修改或从应用程序上下文中删除。我想知道是否有一种机制可以覆盖其声明?
我检查了官方的Spring Http集成文档,但找不到太多。如果这样做可行,我会感到惊讶,但是我借此机会第一次在这个备受喜爱的平台上提出要求。
要重新声明的定义:
<int-http:outbound-gateway id='httpGETOutboundGateway'
request-channel='httpGETRequestChannel'
url="{scheme}://{host}:{port}${configurationServiceLocation}"
http-method='GET'
expected-response-type='java.lang.String'
charset='UTF-8'>
<int-http:uri-variable name="scheme" expression="T(org.springframework.web.context.request.RequestContextHolder).
requestAttributes.request.getScheme()"/>
<int-http:uri-variable name="host" expression="T(com.company.app.UriVariablesResolver).resolveHost()" />
<int-http:uri-variable name="port" expression="T(com.company.app.UriVariablesResolver).resolvePort()" />
</int-http:outbound-gateway>
为Resolver声明了不同的表达式。
<int-http:outbound-gateway id='httpGETOutboundGateway'
request-channel='httpGETRequestChannel'
url="{scheme}://{host}:{port}${configurationServiceLocation}"
http-method='GET'
expected-response-type='java.lang.String'
charset='UTF-8'>
<int-http:uri-variable name="scheme" expression="T(org.springframework.web.context.request.RequestContextHolder).
requestAttributes.request.getScheme()"/>
<int-http:uri-variable name="host" expression="T(com.company.app2.MyResolver).resolveHost()" />
<int-http:uri-variable name="port" expression="T(com.company.app2.MyResolver).resolvePort()" />
</int-http:outbound-gateway>