Spring Framework 5 FAQ

什么是Spring Framework 5?

Spring Framework 5是Spring Framework的主要版本升级,已经有好几年了。它引入了一个名为Spring WebFlux的新的非阻塞Web框架 ,它使用Reactor  来支持Reactive Streams  API。它还提供了一个替代注释控制器的函数式编程,一流的Kotlin语言支持,以及与JUnit 5的一流集成。它基于Java 8语言特性,旨在与Java 9一起使用。

有关更多详细信息,请参阅参考文档,或观看 Juergen Hoeller的Spring Framework 5主题和趋势。

Spring Boot是否支持Spring Framework 5?

是的,Spring Boot 2.x系列是基于Spring Framework 5. Spring Boot 2.0 预计将  在Spring Framework 5.0之后普遍可用,旨在围绕SpringOne Platform的时间框架。请暂时使用最新的Spring Boot 2.0里程碑,已经发布了Spring Framework 5.0。有关最新版本,请查看spring.io/spring-boot  网站或GitHub。

我们为什么要介绍Spring WebFlux?

阻塞线程消耗资源。对于需要处理大量并发请求的延迟敏感型工作负载,非阻塞异步编程模型更有效。这对于移动应用程序和互连的微服务尤其重要,并且通常用于具有许多客户端和不均匀工作负载的场景。

Spring WebFlux的目标是为Spring开发人员提供类似于node.js的非阻塞事件循环样式编程模型。有关更多详细信息和演示,请通过Rossen Stoyanchev观看使用Spring Framework 5的五个用例  和反应式Web应用程序中的Servlet vs Reactive Stacks。

我可以在Spring Framework 5中使用Spring MVC吗?

当然,基于Servlet的Spring MVC仍然作为新WebFlux框架的一流选择。升级到Spring Framework 5不需要重写您的应用程序以使用Spring WebFlux。无论如何,如果您正在开发无法从非阻塞编程模型中受益的Web应用程序,或者使用阻塞JPA或JDBC API来实现持久性(通常与线程绑定事务结合使用),请继续使用Spring MVC。

作为奖励,Spring MVC还支持反应式返回类型作为其DeferredResult功能的替代方案,允许使用新的WebClient或反应式数据存储驱动程序进行异步响应,即使在传统的Servlet安排中也是如此。但请注意,只有完整的WebFlux堆栈才能在事件循环模型中提供完全无阻塞的I / O.

Mono和Flux是什么?

Spring Framework 5中的WebFlux框架使用Reactor  作为其异步基础。此项目提供核心类型,Mono 表示单个异步值,Flux  表示异步值流。它还提供了一个操作库, 用于操作这些值。有关更多信息,请参阅 GitHub上的reactor-core  和reactive-streams-commons项目。

如何使我的所有代码都无阻塞?

要使处理程序完全无阻塞,您需要在整个处理链中使用反应库,一直到持久层。反应性Spring数据库已经可用于Cassandra,MongoDB,Redis和Couchbase。请注意,JPA和JDBC本质上是阻止API; 我们仍在等待非阻塞关系数据库驱动程序的共同点。

其他已经被动的Spring项目包括Spring Security,Spring Vault和Spring Cloud Stream。

如果我的数据库没有反应库,该怎么办?

处理阻塞和非阻塞代码混合的一个建议是使用微服务边界的功能将阻塞后端数据存储代码与非阻塞前端API分离。或者,您也可以使用工作线程池来阻止操作,从而使主事件循环保持非阻塞状态。

与RxJava等其他反应库的互操作性如何?

Reactor使用与RxJava相同的底层Pub / Sub API和其他  基于Reactive Streams的库(Kaazing,Lightbend,Netflix,Pivotal,Red Hat,Twitter等众多工程师之间的协作)。

WebFlux中的带注释的处理程序方法(以及在有限的程度上甚至在Spring MVC中)也可以声明RxJava 1.x或2.x类型,框架会自动调整相应的Reactor发布者。如果您碰巧拥有基于RxJava的驱动程序和/或对基于RxJava的处理逻辑的偏好,这很有意义。

我还可以用注释编写控制器方法吗?

是的,Spring MVC和Spring WebFlux都支持使用@ Controller,@ RequestMapping等相同的基于注释的编程模型。而不是获取线程的所有权并立即执行工作,WebFlux控制器方法对异步请求和响应类型进行操作。

我可以在不使用注释的情况下编写控制器方法吗?

是的,对于喜欢避免注释和反射神奇的开发人员,Spring Framework 5提供了一种新的功能API,  可以通过编程方式匹配路由和处理程序功能。这可以通过Java 8中的第一个类函数支持使用lambdas或方法引用来实现。有关如何组合处理程序的更多信息,请参阅 Arjen Poutsma 撰写的Spring Framework 5:Functional Web Framework中的新文章。

WebFlux框架将运行哪些HTTP服务器?

WebFlux框架侧重于Tomcat和Jetty以及Netty和Undertow('underow-core',不需要'underow-servlet')。由于它旨在支持异步编程,因此框架永远不会公开Servlet API - 但它可以将其Reactive Streams层调整到封面下的Servlet 3.1容器的非阻塞功能上(对Tomcat和Jetty的最佳支持以及最佳 - 在运行时对其他Servlet容器的适应性)。

HTTP客户端代码怎么样?

该AsyncRestTemplate已弃用赞成新的Web客户端提供了一个更流畅的API,并且能够既同步和异步在一个封装的。RestTemplate本身并没有被弃用,使用它没有任何问题; WebClient可以被视为更现代化的继承者

Spring Framework 5是否适用于Java 6或Java 7?

不,Spring Framework 5需要Java 8或更高版本。请继续使用Spring Framework 4.3 for Java 6/7场景。

Spring Framework 5是否适用于新的Java 9模块系统?

是的,Spring Framework 5在Spring Framework 5 jar的清单中附带了自动模块名称条目。Spring库的公共API表面保持不变。

Spring Framework 5是否支持Kotlin?

是的,Spring Framework 5正式支持Kotlin。有关更多详细信息,请参阅Kotlin支持文档。在Spring Framework 5中还有两篇关于Kotlin支持的博文:在Spring Framework 5和Spring Framework 5中引入Kotlin支持,功能方式是SébastienDeleuze。

如何升级到Spring Framework 5?

有关迁移到Spring Framework 5的详细信息,请参阅此Wiki页面。

Spring5.0(2)--- Framework 5 FAQ相关推荐

  1. Spring5学习(二):Spring 配置、依赖注入

    Spring5学习(二) 5.Spring 配置 5.1 别名 5.2 Bean的配置 5.3 import 6.依赖注入 6.1 构造器注入 6.2 Set注入 6.3 其他注入 6.4 bean的 ...

  2. Java总结:Spring5框架(1)

    Spring5框架(1) 一:什么是Spring? Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用 ...

  3. 猪猪猫.CN-WINXPSP2电脑城装机豪华版9.0 (DVD) 2007.03.25

    ============================================================ MD5:0420adf6ae9d706e65c5bcc007728cfa   ...

  4. 系统linux/redhat6.5 zabbix 2.47监控nginx1.8.0 (下)

    2019独角兽企业重金招聘Python工程师标准>>> 6  zabbix_get获取数据(服务器端) (测试是否能接受到数据) zabbix_get -s 172.16.145.7 ...

  5. 我的Debian 8.0 (jessie)配置文档

    2019独角兽企业重金招聘Python工程师标准>>> 我的Debian  8.0 (jessie)配置文档 1,添加软件源  su到root用户 vi  /etc/apt/sou ...

  6. CodeArt WSS3.0(MOSS)字段编辑权限控制解决方案(v1.0)

    Windows SharePint Service 3.0(或MOSS)默认不支持字段级的权限.而在项目的实施过程中,客户经常会提出这个需求. 解决方案有两种: 1)开发自定义的字段,在字段上附加控制 ...

  7. ArcGIS API for JavaScript 4.0(一)

    原文:ArcGIS API for JavaScript 4.0(一) 最近ArcGIS推出了ArcGIS API for JavaScript 4.0,支持无插件3D显示,而且比较Unity和Sky ...

  8. android AVB2.0(四)libavb库介绍

    本篇android AVB2.0学习总结系统的第四篇,接上篇android AVB2.0(三)Init阶段安全启动流程, 这里介绍一下libavb库的详细实现. 请支持原创,原文链接:https:// ...

  9. XenApp_XenDesktop_7.6实战篇之二十一:Linux Virtual Desktop 1.0(下篇)

    在Linux Virtual Desktop 1.0(上篇)完成了系统要求介绍.更新Delivery Controller和准备Linux系统三部分的内容,在本文章中我们将在上篇的基础上继续介绍创建计 ...

最新文章

  1. windows10下postgreSQL 下载、安装、启动、关闭
  2. Distcp 分布式拷贝
  3. Google Cloud Platform试用期变成只有一天
  4. doorway path issue of my task in HCP
  5. android studio更新之后打包遇到V1(Jar Signature)、 V2(Full APK Signature)问题
  6. 复盘Build 2016:不要错过微软给.NET开发者的这些福利
  7. 方舟服务器维护驯龙,方舟生存进化新手图文攻略 最详细的驯龙教程方法
  8. 安装libsvm工具包
  9. 设计模式学习笔记——责任链(Chain of Responsibility)模式
  10. Redis 6.0 源码阅读笔记(3) -- 概述 Redis 重要数据结构及其 6 种数据类型
  11. [译] 你的站点如你所想的移动友好吗?
  12. java二级大纲_计算机二级Java语言程序设计考试大纲
  13. R语言非参数检验(二)
  14. 关于计算机四级网络工程师的考试
  15. 这届年轻人正在背着你偷偷攒钱
  16. java制作超炫流星雨表白,python星空浪漫表白源码
  17. A+B=X【浙江工商大学oj 详细解析版】
  18. 网易视频云郭再荣:打造一体化多场景的视频云平台
  19. 前端面试 | JavaScript知识点 | 课程笔记
  20. 计算机音乐谱软件假装,愚人节整人方法 让电脑遭殃的整蛊软件

热门文章

  1. 基于modelsim的十个Verilog入门试验程序(2)(JK触发器+环形计数器)—程序+测试代码+波形+结果分析
  2. 【其他】命名风格之unix like风格,Windows风格,ST固件库风格,驼峰命名
  3. 【C语言】统计数字字符的个数(字符组)
  4. gettimeofday函数使用《代码》
  5. 兴利调节matlab编程,水利计算之兴利调节计算.ppt
  6. 【MyBatis】第一章 快速入门
  7. 7 Managing Users and Securing the Database
  8. 黑马公开课——运行原理与GC学习笔记
  9. 洛谷 P2762 太空飞行计划问题
  10. SPOJ-New Distinct Substrings,注意会爆int