问题描述
我正在了解 Spring Boot 项目中的 RestTemplate,我想记录 connectTimeout 属性的值。
要设置此值,我可以执行以下操作:
HttpComponentsClientHttpRequestFactory rf =
(HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory();
rf.setConnectTimeout(3000);
但我想像这样在 application.yml 中设置它:
communication:
http:
client:
connectTimeout: '3000'
然后,在配置类中我想记录这个值。如何获取配置类中connectTimeout的值?我不能做 rf.getConnectTimeout();
因为这个方法不存在。
还有一个问题,Spring 如何设置我在 application.yml 中添加的 connectTimeout 值?任何反馈将不胜感激!
解决方法
AFAIK,没有简单的“设置属性 X”答案。
我所做的是创建自己的 @ConfigurationProperties
类,例如RestTemplateProperties
,注册等等。
RestTemplate
bean 并在那里自定义我的 RestTemplate。
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder,RestTemplateProperties restTemplateProperties) {
return restTemplateBuilder
.setConnectTimeout(restTemplateProperties.getConnectionTimeout())
.setReadTimeout(restTemplateProperties.getReadTimeout())
.build();
}
然后您可以在您的属性文件中设置值。
注意:这不是完全我的做法,但希望你能明白。