在 SpringBoot 中使用 @ConfigurationProperties 设置超时



我正在浏览一个为休息操作配置专用 restTemplate 的代码。我看到以下属性

httpProperties.connection-request-timeout=6100
httpProperties.connect-timeout=6100
httpProperties.read-timeout=6100

我的配置类如下所示

@Bean
@ConfigurationProperties(prefix = "httpProperties")
public HttpComponentsClientHttpRequestFactory webSystemHttpRequestFactory() {
SSLContext sslContext;
try {
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
HttpClient httpClient = HttpClients.custom().setMaxConnTotal(maxTotalConnection)
.setMaxConnPerRoute(maxConnectionPerRoute).setSSLSocketFactory(socketFactory).build();
return  new HttpComponentsClientHttpRequestFactory(httpClient);
} 
catch(Exception e) {
}
return  new HttpComponentsClientHttpRequestFactory();
}
@Bean(name = "webSystemRestTemplate")
public RestTemplate webSystemRestTemplate() {
RestTemplate restTemplate = new RestTemplate(webSystemHttpRequestFactory());
return restTemplate;
}

我可以看到日志

o.a.h.i.c.DefaultManagedHttpClientConnection.setSocketTimeout - http-outgoing-1: set socket timeout to 6100

以下是我想了解的内容:

  1. 如何设置此值以及通过@CnfigurationProperties注释设置到哪个属性?

  2. 它适用于 Spring 引导应用程序级别还是每个请求级别?

请帮助我理解背后的概念。

注意:使用的 Apache http 客户端版本是 4.5.2

> 在HttpComponentsClientHttpRequestFactory.class的源代码中,有一个名为RequestConfig.class的对象。

在它的源代码中,您可以看到有三个参数。

private final Timeout connectionRequestTimeout;
private final Timeout connectTimeout;
private final Timeout responseTimeout;

这些是参数映射到使用的那些

@ConfigurationProperties(prefix = "httpProperties")

这不是设置这些参数的最常见方法。但是,有多种方法可以设置这些,如此处所述。

休息模板超时示例

属性设置属性 connectionRequestTimeOut、connectTimeOut 和 readTimeOut 的 HttpComponentsClientHttpRequestFactory 类。映射是使用配置属性注释完成的,该注释将烤肉串案例属性名称映射到 Bean 属性。

HttpComponentsClientHttpRequestFactory 文档:

HttpComponentsClientHttpRequestFactory

相关内容

  • 没有找到相关文章

最新更新