我已经为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初始启动加载。
我该怎么做?
答案 0 :(得分:2)
以编程方式,您可以从注入requestFactoryGetByCustomer
bean并使用其setter的任何服务中执行此操作:
@Autowired
private SimpleClientHttpRequestFactory requestFactoryGetByCustomer;
....
this.requestFactoryGetByCustomer.setConnectTimeout(30_000);
要从数据库中读取这些选项并使用Spring容器功能(例如,在当前情况下使用Property Placeholder)将它们填充到bean定义中,您应该查看Commons Configuration
框架并填充{{1}来自数据库Properties
的对象。