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
Spring Framework 5.0引入了对Java 8和JavaEE 7的支持,以及WebFlux应用,可在Netty服务器中运行。在HTTP/2客户端方面,它集成了OkHttpClient和ReactorClientHttpConnector(支持HTTP/2)。在服务端,它依赖Servlet 3.1容器,如Tomcat和Jetty,HTTP/2支持取决于容器实现。RestTemplate和新的WebClient提供了一致的Web服务调用接口,而WebSocket和WebServiceTemplate则分别处理WebSocket和SOAP通信。

1万+

被折叠的 条评论
为什么被折叠?



