Java 为生成的api rest客户端配置连接和读取超时
我正在使用swagger codegen maven插件生成一个api rest客户端。我正在使用resttemplate库,我的pom.xml配置如下所示Java 为生成的api rest客户端配置连接和读取超时,java,spring-boot,timeout,maven-plugin,resttemplate,Java,Spring Boot,Timeout,Maven Plugin,Resttemplate,我正在使用swagger codegen maven插件生成一个api rest客户端。我正在使用resttemplate库,我的pom.xml配置如下所示 <build> <plugins> <plugin> <groupId>io.swagger</groupId> <artifactId>swagger-cod
<build>
<plugins>
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/../swagger.yml</inputSpec>
<language>java</language>
<generateApis>true</generateApis>
<generateApiTests>false</generateApiTests>
<generateSupportingFiles>true</generateSupportingFiles>
<generateModelDocumentation>false</generateModelDocumentation>
<modelPackage>my.base.package.here</modelPackage>
<apiPackage>my.base.api.package.here</apiPackage>
<modelNamePrefix>MyApiPrefix</modelNamePrefix>
<configOptions>
<library>resttemplate</library>
<sourceFolder>src/gen/java</sourceFolder>
<java8>true</java8>
<dateLibrary>java8</dateLibrary>
<hideGenerationTimestamp>true</hideGenerationTimestamp>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
configure
方法的文档没有太多说明:
配置
公共T配置(T restTemplate)
使用此生成器配置提供的RestTemplate实例
这是使用resttemplate库时配置超时的标准方法吗更新:我的实际实现不起作用(似乎ResttemplateBuilder自己的配置以错误的方式干扰了autowired RestTemplate(我正试图通过builder进一步配置))配置。由其他库(例如jersey)生成的api客户端提供了一个setter,可以使用以下命令直接配置超时:
apiClient.setConnectTimeout(timeoutValue);
尽管使用configure方法不起作用,但是可以通过使用RestTemplateBuilder的build方法创建RestTemplatebean来配置超时值
@Bean
public RestTemplate restTemplate(
RestTemplateBuilder restTemplateBuilder,
final int serviceConnectionTimeout,
final int serviceReadTimeout
) {
return restTemplateBuilder
.setConnectTimeout(serviceConnectionTimeout)
.setReadTimeout(serviceReadTimeout)
.build();
}
参考:
@Bean
public RestTemplate restTemplate(
RestTemplateBuilder restTemplateBuilder,
final int serviceConnectionTimeout,
final int serviceReadTimeout
) {
return restTemplateBuilder
.setConnectTimeout(serviceConnectionTimeout)
.setReadTimeout(serviceReadTimeout)
.build();
}