微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Spring Boot 项目中获取 connectTimeout 值?

如何解决如何在 Spring Boot 项目中获取 connectTimeout 值?

我正在了解 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();
}

然后您可以在您的属性文件中设置值。

注意:这不是完全我的做法,但希望你能明白。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。