如何为OpenAPI自动生成的RestTemplate设置超时时间
为OpenAPI Generator生成的RestTemplate客户端设置自定义超时
方法一:注入自定义RestTemplate Bean
生成的API类支持通过构造方法传入自定义RestTemplate实例,你可以通过Spring配置类创建带超时设置的Bean,再注入到生成的API类中:
- 创建配置类定义带超时的RestTemplate:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; import org.springframework.http.client.SimpleClientHttpRequestFactory; @Configuration public class RestTemplateConfig { @Bean public RestTemplate customRestTemplate() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); // 连接超时(单位:毫秒) factory.setConnectTimeout(5000); // 读取超时(单位:毫秒) factory.setReadTimeout(10000); return new RestTemplate(factory); } }
- 在业务类中注入该RestTemplate并初始化生成的API客户端:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.my-org.api.YourGeneratedApi; @Component public class ApiService { private final YourGeneratedApi apiClient; @Autowired public ApiService(RestTemplate customRestTemplate) { this.apiClient = new YourGeneratedApi(customRestTemplate); } // 调用API的业务方法 }
方法二:修改生成的ApiClient类(临时方案)
如果生成了ApiClient类(属于生成的支持文件),可以直接修改其中创建RestTemplate的逻辑:
找到ApiClient中的createRestTemplate()方法,添加超时配置:
private RestTemplate createRestTemplate() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setConnectTimeout(5000); factory.setReadTimeout(10000); return new RestTemplate(factory); }
注意:重新生成代码时该修改会被覆盖,仅适合临时测试场景。
方法三:自定义生成模板(持久化方案)
若希望每次生成代码都自动包含超时配置,可自定义OpenAPI Generator的模板:
- 复制OpenAPI Generator官方Java resttemplate库的
ApiClient.mustache模板文件到项目目录(如src/main/resources/openapi-templates)。 - 修改模板中的
createRestTemplate()方法,添加超时设置逻辑。 - 在Maven插件配置中指定自定义模板目录:
<configuration> <!-- 保留原有配置 --> <templateDirectory>src/main/resources/openapi-templates</templateDirectory> </configuration>
内容的提问来源于stack exchange,提问作者ElPiter
相关产品推荐
相关产品推荐

