spring - Spring TestRestTemplate 超时
问题描述
在调试使用 TestRestTemplate(注意:不是 RestTemplate)的 Spring 集成测试时,如果我在生产代码(服务器端)上单步执行断点,我有时会发现测试的客户端超时。
如何更改 Spring TestRestTemplate 的超时?
解决方案
在测试顶部添加一个新的配置类(我称之为 TestConfig):
@SpringBootTest(webEnvironment = ..., classes = [YourApplication, TestConfig])
然后包含该 TestConfig 类
并包含如下自定义 RestTemplateBuilder
如果需要,这些都可以是您的测试类的内部类
public static class TestConfig {
@Bean
public MyRestTemplateBuilder myRestTemplateBuilder() {
return new MyRestTemplateBuilder()
}
}
public static class MyRestTemplateBuilder extends RestTemplateBuilder {
MyRestTemplateBuilder(RestTemplateCustomizer... customizers) {
super(customizers)
}
@Override
ClientHttpRequestFactory buildRequestFactory() {
ClientHttpRequestFactory result = super.buildRequestFactory()
// Usually result is a: org.springframework.http.client.HttpComponentsClientHttpRequestFactory
result.setConnectTimeout(100000);
result.setReadTimeout(100000);
return result
}
}
您的超时将根据需要进行修改。
奖励:
对于正常的 RestTemplate 超时,您可以执行以下操作:
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
// This code can be used to change the read timeout for testing
SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = (SimpleClientHttpRequestFactory) restTemplate.getRequestFactory();
simpleClientHttpRequestFactory.setReadTimeout(100); // millis
return restTemplate;
}
推荐阅读
- rust - 将 HashMap 值转换为 BinaryHeap
- python - Pyspark:有没有一种有效的方法来排除只有空值但 pk 的行?
- r - 立即重新单击按钮无效
- javascript - html显示属性不能使用javascript更改
- linux-kernel - 重新接通交流电源后以太网端口不工作
- asp.net - ASP.NET 将记录从 Excel 复制到 SQL Server - 性能缓慢
- python - 与 ovito 库结合使用时,Python 的 matplotlib 中 plt.figure() 中的“无法在没有 QApplication 的情况下创建 QWidget”
- android-studio - 如何将文件的数据转换为人类可读的格式
- java - pom.xml 文件在尝试添加依赖项时显示错误
- node.js - 仅安装 devDependencies - `swagger-express-middleware` 会阻止 `glob` 安装