一、简介:
RestTemplate
是Spring
提供的用于访问Rest服务的客户端,RestTemplate
提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。在内部,RestTemplate
默认使用HttpMessageConverter
实例将HTTP
消息转换成POJO
或者从POJO
转换成HTTP
消息。默认情况下会注册主mime类型的转换器,但也可以通过setMessageConverters
注册其他的转换器。
二、原理分析:
1.RestTemplate 调用流程:
RestTemplate 内部通过调用 doExecute 方法执行:。
1).首先就是获取 ClientHttpRequest,这里如果RestTemplate有设置拦堆器话,首先使用拦截器,作为HttpClient. (robbin负载均衡器利用这一特性)。
protected <T> T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback,
@Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
ClientHttpResponse response = null;
//1.选择一个HttpClient.
ClientHttpRequest request = createRequest(url, method);
if (requestCallback != null) {
requestCallback.doWithRequest(request);
}
//2. 发送请求出去
response = request.execute();
handleResponse(url, method, response);
//3.提取response信息(消息转换)
return (responseExtractor != null ? responseExtracto