博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring框架spring-web模块中的RestTemplate类详解
阅读量:4178 次
发布时间:2019-05-26

本文共 2771 字,大约阅读时间需要 9 分钟。

RestTemplate类是spring-web模块中进行HTTP访问的REST客户端核心类。RestTemplate请求使用阻塞式IO,适合低并发的应用场景。

1. RestTemplate类提供了3个构造函数

  • RestTemplate()
  • RestTemplate(ClientHttpRequestFactory requestFactory)

org.springframework.http.client.ClientHttpRequestFactory接口的实现类给出底层实现的第三方HTTP客户端软件。

  • RestTemplate(java.util.List<HttpMessageConverter<?>> messageConverters)

org.springframework.http.converter.HttpMessageConverter接口的实现对象能够在HTTP消息与Java POJO之间进行数据转换。

 

2. RestTemplate类能够以多种HTTP的方法,如GET, POST, PUT, DELETE, HEAD, OPTIONS等,向服务器发起HTTP请求。

2.1 GET请求的方法

  • getForObject(String, ResponseClass, Object[])
  • getForObject(String, ResponseClass, Map)
  • getForObject(URI, ResponseClass);

2.2 PUT请求的方法:

  • put(String, RequestClass, Object[])
  • put(String, RequestClass, Map)
  • put(URI, RequestClass);

2.3 POST请求的方法:

  • postForObject(String, RequestClass, ResonponseClass, Object[])
  • postForObject(String, RequestClass, ResonponseClass, Map)
  • postForObject(URI, RequestClass, ResonponseClass);

3. 在最新的Spring Framework 5.0.7.RELEASE中,spring-web模块底层采用的第三方HTTP客户端软件实现

3.1 Java HttpURLConnection (默认RestTemplate采用,不支持HTTP2)

SimpleClientHttpRequestFactory

3.2 Netty 4.1.25.Final

Netty4ClientHttpRequestFactory已经过时,被ReactorClientHttpConnector替代

3.3 OkHttp 3.10.0

OkHttp3ClientHttpRequestFactory

3.4 Apache HttpComponents (不支持HTTP2)

  • HttpClient 4.5.5

HttpComponentsClientHttpRequestFactory

  • HttpAsyncClient 4.1.3

HttpComponentsAsyncClientHttpRequestFactory已经过时

4. 示例

4.1 使用默认客户端构造RestTemplate对象

RestTemplate restTemplate = new RestTemplate();

等价于

RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory());

等价于

RestTemplate restTemplate = new RestTemplate();restTemplate.setRequestFactory(new SimpleClientHttpRequestFactory());

4.2 使用OkHttp3构造RestTemplate对象

RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());

4.3 使用RestTemplateBuilder构建参数化的RestTemplate对象

RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();restTemplateBuilder.build();

4.4 使用OkHttp3Client发出HTTPS请求

SSLContext sslContext = SSLContext.getInstance("TLS");sslContext.init(null, trustAllCerts, new java.security.SecureRandom());SSLSocketFactory ssf = sslContext.getSocketFactory();OkHttpClient httpClient = new OkHttpClient.Builder()	.sslSocketFactory(ssf, (X509TrustManager) trustAllCerts[0])	.hostnameVerifier(verifieredAllHost)	.build();OkHttp3ClientHttpRequestFactory requestFactory =      new OkHttp3ClientHttpRequestFactory(httpClient);RestTemplate template = new RestTemplate(requestFactory);

5. 替代RestTemplate的响应式客户端WebClient

在spring-webflux模块中,提供了响应式REST请求客户端WebClient,用以替代RestTemplate。

org.springframework.web.reactive.function.client.WebClient接口使用非阻塞式IO,支持异步调用,适合高并发、流式处理场景。

在该spring-webflux模块中,提供了一个WebClient默认实现org.springframework.web.reactive.function.client.DefaultWebClient类,后续我们再详细介绍。

        

参考链接:

 

转载地址:http://omlai.baihongyu.com/

你可能感兴趣的文章
go中map与xml互转
查看>>
java进程占用CPU过高
查看>>
CSDN-markdown编辑器
查看>>
拷贝整个目录到另一台服务器并排除log目录
查看>>
拜托,面试别再问我跳表了!
查看>>
linux驱动实例
查看>>
android ArrayList<String> 转 String[]
查看>>
RecyclerView baseadapter
查看>>
Android中应用程序如何获得系统签名权限
查看>>
MPAndroidChart 动态更新
查看>>
Recycler表格(excelPanel)
查看>>
android一行代码实现沉浸式布局效果
查看>>
json, recyclerView问题
查看>>
cmake处理多源文件目录的方法
查看>>
Service Intent must be explicit
查看>>
android studio SDK开发
查看>>
studio 统计代码的行数
查看>>
字符数组和16进制互换
查看>>
PHP项目中出现致命错误: Class 'Redis' not found
查看>>
There is no tracking information for the current branch.
查看>>