【Spring】RestTemplate之超时设置
在Spring框架中,使用RestTemplate
进行HTTP请求时,可以通过ClientHttpRequestFactory
来设置超时。默认的SimpleClientHttpRequestFactory
不允许设置超时,但可以通过继承并修改来实现。
以下是一个设置RestTemplate
超时的示例:
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
public class RestTemplateConfig {
public RestTemplate restTemplate() {
ClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory() {
@Override
protected void prepareConnection(java.net.HttpURLConnection connection, String httpMethod) {
super.prepareConnection(connection, httpMethod);
// 设置连接超时(单位:毫秒)
connection.setConnectTimeout(3000);
// 设置读取超时(单位:毫秒)
connection.setReadTimeout(3000);
}
};
return new RestTemplate(factory);
}
}
在这个配置类中,我们创建了一个RestTemplate
实例,并且通过匿名内部类覆盖了SimpleClientHttpRequestFactory
的prepareConnection
方法,在这个方法中设置了连接超时和读取超时。
另外,如果你使用的是Spring Boot,可以在application.properties
或application.yml
中设置超时:
# application.properties
# 连接超时时间(单位:毫秒)
spring.http.client.connect-timeout=3000
# 读取超时时间(单位:毫秒)
spring.http.client.read-timeout=3000
或者使用RestTemplateBuilder
:
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder
.setConnectTimeout(3000)
.setReadTimeout(3000)
.build();
}
}
这样,你就可以通过这些方式来设置RestTemplate
的超时。
评论已关闭