博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Framework 5中的对HTTP/2客户端和服务器的集成
阅读量:4178 次
发布时间:2019-05-26

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

Spring框架最早出现于2003年,以轻量级为Java企业应用开发提供了JavaEE之外的另一个选择。Spring框架就是一个辅助开发Java企业应用的框架。

Spring框架的最新版本是5.0,主要新特性如下:

  • 最低要求Java 8,兼容Java 9
  • 最低要求JavaEE 7,兼容JavaEE 8(Servlet 4.0)
  • 支持WebFlux应用,无需Servlet容器即可运行(在Netty服务器中)

作为一款Java企业应用的开发框架,Spring框架首先提供了能够将应用发布为Web服务的服务端代码。与此同时,为了便于Web服务之间的调用,Spring框架还提供了调用Web服务的客户端代码。这主要是通过Spring框架的spring-web模块实现,此外spring-ws项目也提供了REST服务相关的实现。

1. spring-web模块

1.1 HTTP相关

客户端方面,集成了如下HTTP客户端实现:

  • 基于HttpURLConnection的SimpleBufferingClientHttpRequest和SimpleStreamingClientHttpRequest,不支持HTTP2
  • 基于OkHttpClient的OkHttp3ClientHttpRequest,支持HTTP2
  • 基于Apache HttpComponents HttpClient的HttpComponentsClientHttpRequest和HttpComponentsStreamingClientHttpRequest,不支持HTTP2
  • 基于Netty HttpClient的ReactorClientHttpConnector(Netty4ClientHttpRequest已过时),支持HTTP2(还需要第三方APLN实现)

服务端方面,集成任何Servlet 3.1容器实现。

1.2 Web相关

客户端方面,提供了统一的RestTemplate类,该类底层默认采用基于HttpURLConnection的请求与响应,也可以采用基于其他HTTP客户端的实现。RestTemplate类的用法详解后续文章。

服务端方面,集成任何Servlet 3.1容器实现,如Undertow, Tomcat, Jetty, Netty。但是还不支持Servlet 4,所以对HTTP2的支持还依赖容器的各自实现。

1.3 Remoting相关

  • caucho Hessian
  • httpinvoker
  • JAX-WS

2. spring-web相关其他web模块

  • webmvc

Spring框架提供基于Servlet的MVC实现。

  • webflux

Spring框架5.0的新特性,提供基于Reactor的服务实现,应用无需Servlet容器即可运行在Netty服务器上。目前不支持HTTP2。

WebClient接口(默认实现类DefaultWebClient)是spring-webflux模块提供的响应式REST请求客户端,使用非阻塞式IO,适合高并发、流式处理场景。WebClient的用法详解后续文章。

  • websocket

Spring框架提供的Web Socket实现。

3. spring-ws项目

首先需要明确,spring-ws项目不属于Spring框架,而是与Spring框架并列的项目。

项目中提供的WebServiceTemplate类,是一款能够以XML消息的方式调用Web服务的客户端。其底层传输可以使用HTTP, JMS, EMAIL, XMPP等。与RestTemplate类似,WebServiceTemplate的底层默认采用基于HttpURLConnection的HttpUrlConnectionMessageSender发送消息,也可以采用基于Apache HttpComponents HttpClient的HttpComponentsMessageSender发送消息。WebServiceTemplate类的用法详解后续文章。

参考链接:

https://docs.spring.io/spring/docs/current/spring-framework-reference/index.html

https://github.com/spring-projects/spring-framework
https://github.com/spring-projects/spring-ws
https://docs.spring.io/spring-ws/docs/3.0.1.RELEASE/reference/#client-web-service-template

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

你可能感兴趣的文章
Lombok---@EqualsAndHashCode(callSuper = true)的使用
查看>>
Java实体映射工具 MapStruct的简单应用
查看>>
IDEA中的Git操作
查看>>
sharding-jdbc配置主从数据库
查看>>
请求https跳过证书认证
查看>>
JDBC多线程插入大量数据.md
查看>>
MYSQL查看数据库相关信息
查看>>
JAVA多线程插入MYSQL数据库
查看>>
记录ajax 发送json数据时引发的问题
查看>>
Chrome在Win下的跨域解决方案
查看>>
SpringBoot 快速下载最新的版本依赖
查看>>
Maven-dependencyManagement的使用
查看>>
springcloud 配置 spring.cloud.config.uri 无效
查看>>
第七篇: 分布式配置中心(Greenwich版)
查看>>
.properties文件 git 提交后中文字符会乱码
查看>>
第八篇: Spring Cloud Bus(Hoxton版本)
查看>>
sqlserver出现文件组‘PRIMARY‘已满
查看>>
Idea移除和重新导入Maven工程module
查看>>
第九篇: Spring Cloud Sleuth(Hoxton版本)
查看>>
第九篇:高可用的服务注册中心
查看>>