1.配置restTemplate,因为我的项目已经存在restTemplate的配置,新的restTemplate是给一部分rest接口调用时使用的,所以自建一个注解@RestType来区分使用的哪一个:
@Configuration
public class RestConfig {
@Bean
@Primary
public RestTemplate restTemplate(){
return new RestTemplate();
}
@Bean
@RestType
public RestTemplate restTemplateWithExpire(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
//连接超时
factory.setConnectTimeout(5);
//连接成功后等待返回的超时
factory.setReadTimeout(3000);
return new RestTemplate(factory);
}
}
//注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RestType {
}
2.用restTemplate调接口,用@RestType区分restTemplate实例
@Slf4j
@RestController
public class DemoController {
@Resource
@RestType
private RestTemplate restTemplateWithExpire;
@GetMapping("/test_rest_template_with_expire")
public String testRestTemplateWithExpire(){
String object = null;
try {
//另起一个项目,随便写个接口运行
object = restTemplateWithExpire.getForObject("http://127.0.0.1:9091/test_hello_with_expire", String.class);
} catch (RestClientException e) {
e.printStackTrace();
}
return "result is : " + object;
}
}