超时动态HTTP出站网关请求工厂

时间:2015-08-03 17:58:25

标签: java spring spring-integration

我已经为HTTP出站网关配置了超时,使用request-factory属性提供对ClientHttpRequestFactory bean的引用:

<int-http:outbound-gateway request-channel="channelGetByCustomer"
    request-factory="requestFactoryGetByCustomer"
    reply-channel="jsonToObjectChannel" url="${getbycustomer.endpoint.url}"
    http-method="GET" expected-response-type="com.mbracero.integration.dto.Item[]">

    <int-http:uri-variable name="customerid" expression="payload.customerid"/>

</int-http:outbound-gateway>

<beans:bean id="requestFactoryGetByCustomer" class="org.springframework.http.client.SimpleClientHttpRequestFactory">
    <beans:property name="connectTimeout" value="${getbycustomer.timeout}"/>
    <beans:property name="readTimeout" value="${getbycustomer.timeout}"/>
</beans:bean>

但我想从DDBB(或以编程方式)动态加载这些属性,而不是从Spring初始启动加载。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

以编程方式,您可以从注入requestFactoryGetByCustomer bean并使用其setter的任何服务中执行此操作:

@Autowired
private SimpleClientHttpRequestFactory requestFactoryGetByCustomer;

....

this.requestFactoryGetByCustomer.setConnectTimeout(30_000);

要从数据库中读取这些选项并使用Spring容器功能(例如,在当前情况下使用Property Placeholder)将它们填充到bean定义中,您应该查看Commons Configuration框架并填充{{1}来自数据库Properties的对象。