领先一步
VMware 提供培训和认证,助您加速进步。
了解更多在SpringOne2GX 2015大会上,Juergen 宣布了 Spring Framework 5的计划,重点将放在响应式架构上。相关工作已在进行中,并且自那时以来发生了许多变化!
在最基本的层面上,响应式编程模型允许编写非阻塞服务和应用程序。这需要从编写命令式逻辑转变为异步、非阻塞、函数式风格的代码,特别是在与外部资源交互时。
大多数 Java Web 应用程序都构建在 Servlet API 之上,该 API 最初是为同步和阻塞式语义而创建的。多年来,增加了对异步请求(Servlet 3.0)和非阻塞 I/O(Servlet 3.1)的支持。在 Spring MVC 中,我们发现为现有应用程序添加选择性的异步 HTTP 请求处理是可行的。然而,我们也发现,在现有的 Web 框架和应用程序生态系统中引入非阻塞 I/O 非常困难。这样做需要对核心契约进行非常深入的更改,这些契约需要从阻塞式语义切换到异步式语义。
Spring MVC 持续受欢迎的原因之一是其直观的、基于注解的编程模型,它基于灵活的控制器方法签名。幸运的是,这同样可以继续作为响应式 Web 应用程序的基础。这就是 Spring Reactive 项目的方向,您会发现一个 TestController,它看起来像任何 Spring MVC 控制器,但在一个具有与 Tomcat、Jetty、Undertow 和 Netty 集成测试的新响应式引擎上运行。请注意,该项目将在 5 月份的 4.3 版本发布后不久合并到 Spring Framework 主分支,为 6 月份的 5.0 M1 版本做准备。
这项工作的一个关键要素是 Reactive Streams 规范,其目的是提供一个“用于具有非阻塞反压的异步流处理的标准”。该规范实现了异构异步组件提供商之间的互操作性:从 HTTP 服务器到 Web 框架、数据库驱动程序等。它将被包含在 JDK 9 中,作为 java.util.concurrent.Flow。
该规范很小,由 4 个接口、一些规则和 TCK 组成。然而,要将其作为 API 公开,需要围绕它来组合异步逻辑的基础设施。Spring Reactive 使用 Reactor Core,这是一个小型且专注的库,作为想要构建在 Reactive Streams 上的库和框架的基础。对于那些可能熟悉 Project Reactor 的人来说,在过去 6-8 个月里发生了许多事情,终于迎来了本周的 Reactor Core 2.5 M1 版本,Stephane Maldini 将很快对此进行全面更新。
请继续关注来自不同 Spring 项目的关于响应式编程的更多博客文章。此外,请期待今年在美丽的巴塞罗那举行的 Spring I/O 大会上的响应式相关内容!