You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为OpenAPI自动生成的RestTemplate设置超时时间

为OpenAPI Generator生成的RestTemplate客户端设置自定义超时

方法一:注入自定义RestTemplate Bean

生成的API类支持通过构造方法传入自定义RestTemplate实例,你可以通过Spring配置类创建带超时设置的Bean,再注入到生成的API类中:

  1. 创建配置类定义带超时的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);
    }
}
  1. 在业务类中注入该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的模板:

  1. 复制OpenAPI Generator官方Java resttemplate库的ApiClient.mustache模板文件到项目目录(如src/main/resources/openapi-templates)。
  2. 修改模板中的createRestTemplate()方法,添加超时设置逻辑。
  3. 在Maven插件配置中指定自定义模板目录:
<configuration>
    <!-- 保留原有配置 -->
    <templateDirectory>src/main/resources/openapi-templates</templateDirectory>
</configuration>

内容的提问来源于stack exchange,提问作者ElPiter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:15:55