阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Spring 框架 5.0 版本发布相关的技术访谈

  • 2017-10-30
  • 本文字数:1793 字

    阅读完需:约 6 分钟

Spring 框架 5.0 版本在 2017 年 9 月 28 日发布,在特性中包含了一个新的反应式 Web 框架。 Pivotal 的产品市场主管 Pieter Humphrey 将这个版本描述为该项目自 2004 年诞生以来最重要的发布版本。

在这个发布版本中,Spring 5.0 的整个代码库都是基于 Java 8 源码级别的。Spring 5.0 完全兼容 JDK 9 进行开发和部署。

Spring 5.0 的反应式 Web 框架名为 Spring WebFlux ,它构建在 Reactor 3.1 项目之上,同时支持注解和函数式风格编程。InfoQ 与 Pivotal 的高级工程师 Rossen Stoyanchev 进行了交流,讨论了他对 Spring 5.0 强调反应式编程的看法。

Stoyanchev:通过 Java 8 的 CompletableFuture,Java 开发人员已经熟悉了采用连续(continuation)风格的 API 来组合异步逻辑的好处。在最近几年间,我们看到出现了一些库用于组合异步逻辑,比如 RxJava 和 Reactor,它们提供了与 CompletableFuture 类似的收益,但它们处理的是流式值并且支持回压(backpressure,在 Reactive Streams 规范中所定义的)。

Spring 框架 5.0 版本借助一个 Web 框架,能够让应用拥抱这种异步编程模型,这个 Web 框架本身的核心协议是完全异步的,内部采用了非阻塞的 I/O,在异步运行时环境上支持 Reactive Streams 回压功能,这些运行时环境包括 Netty、Undertow 以及像 Tomcat 和 Jetty 这样的 Servlet 容器(基于 Servlet 3.1 非阻塞 I/O)。这种方式所带来的最重要的好处就是能够结合事件轮询风格的执行模型来组合异步逻辑,这样就能以更少的硬件资源处理更多的并发请求,在高负载场景下,它的作用会更加明显。

Stoyanchev 说 Spring 5.0 引入的变化对希望升级的已有应用不会带来影响,因为新功能是与 Spring MVC 并存的。

在大多数的应用中,要么导入 spring-webmvc(Servlet 技术栈),要么导入 spring-webflux(Reactive 技术栈),已有的应用可以很容易地升级到 Spring 5 版本的 spring-webmvc。

按照 Stoyanchev 的说法,Spring 5.0 努力在 Spring MVC 和 Spring WebFlux 之间提供一致的体验,开发人员可以在两者之间做出选择。这两个 Web 框架通过灵活的控制器方法签名,支持相同的注解编程模型。除此之外,Spring WebFlux 还提供了可选的、函数式的 Web 端点编程模型,将其与 Java 8 lambdas 和内置的 Kotlin 扩展协同使用是很有吸引力的。

在 Spring 框架 5.0 中,我们实际上对 Spring MVC 进行了扩展,使其支持反应式的返回值,这样的话,就允许 Spring MVC 控制器使用反应式 WebClient 和其他的反应式库,比如反应式数据 repositories,在这个过程中,依然能够在任意的 Servlet 3.1+ 容器中基于 Servlet 的 Web 端点技术进行操作。

InfoQ 还咨询了 Stoyanchev,如果希望采用 Spring 5.0 的反应式编程模型的话,开发人员有什么需要预先注意的地方。

开发人员应该了解从编写命令式风格的逻辑转移到使用声明式、异步的 API 时,有一个很大的学习曲线。另外,异步和非阻塞的代码也更难调试,因为调用栈不再是唯一的。如果你刚刚开始接触的话,建议从小范围开始,留出足够的时间去学习和适应。要慎重选择最适合,并且能够从非阻塞并发中获益最多的应用。在决定开始之前,要衡量和证明性能方面所能带来的收益。另外需要记住的是,有些地方是很容易上手的,比如在已有的 Spring MVC 应用中使用反应式 WebClient。

InfoQ 还与 Spring 框架项目的领导者 Juergen Hoeller 进行了交流,了解了他对 Spring 5.0 的想法。

Hoeller:我们以 Java 8+ 作为基线,这样能够为整个框架带来重要的 API 改善和众多的内部优化。同时,Spring 框架 5.0 能够完全支持 JDK 9,它能够同时支持 classpath 以及模块路径。

核心容器为 Java 8 和 Kotlin 提供了函数式 bean 注册的机制。

Hoeller 补充说,Spring 5.0 还为常见的 Spring API 提供了 Kotlin 扩展,比如 JdbcTemplate 和 RestTemplate,并且还支持对 Kotlin 数据类(data class)进行数据绑定。

Hoeller 总结了 Spring 5.0 其他重要的特性:

Spring 框架 5.0 在运行时支持 Java EE 8 API 级别,比如支持将 Servlet 4.0 的 PushBuilder 注入到 Spring MVC 处理器方法中、用于 JSON 转换的标准 JSON Binding API(作为 Jackson 和 Gson 的替代方案)、JPA 2.2 持久化技术以及注解驱动校验的 Bean Validation 2.0。综上所述,我们的基线依然是 Java EE 7+ 级别,依然支持所有的 Servlet 3.1、JPA 2.1 提供商等等。

查看英文原文 Spring Framework 5.0 Released

2017-10-30 19:004969

评论

发布
暂无评论
发现更多内容

Pygame:实现Python游戏开发的跨平台梦想

技术冰糖葫芦

API 文档

三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合

快乐非自愿限量之名

sqlite 数据库 Spring Boot

Docker Exec 命令详解与实践指南

霍格沃兹测试开发学社

谷歌最强开源大模型亮相!Gemini技术下放,笔记本就能跑,可商用

Openlab_cosmoplat

关于 yarn 的中央仓库 registry.yarnpkg.com

伤感汤姆布利柏

白话大模型① :AI分析能做什么?在实际落地中会碰到什么问题?

星环科技

AIGC下一步:如何用AI再度重构或优化媒体处理?

阿里云视频云

云计算 视频云 AIGC

利用ChatGPT提升工作效率的技巧与方法

霍格沃兹测试开发学社

新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技

精细管理,智慧决策:商品企划系统如何提升鞋服品牌运营效率?

第七在线

AI浪潮下的低代码开发:变革软件开发的未来

EquatorCoco

AI 低代码 AI人工智能

低代码与国产化部署:软件开发的未来趋势与应用实践

不在线第一只蜗牛

低代码 软件咖啡 国产化部署

软件测试学习笔记丨docker 搭建常用服务器与平台命令

测试人

Docker 软件测试 自动化测试 测试开发

深度探析低代码:助力“数智转型”赋能中国制造

快乐非自愿限量之名

人工智能 低代码 制造业 数智化

Python 教学平台,支持“多班教学”的课程授课方式|ModelWhale 版本更新

ModelWhale

Python 人工智能 大数据 数据分析 云课堂

白话大模型③ | 我们为何需要机器学习运营平台?

星环科技

Apache Calcite 一条 SQL 的查询计划生成之旅【上】

LakeShen

开源 sql 优化器 apache 社区 Apche Calcite

深入了解数据库:分类、作用与特点

霍格沃兹测试开发学社

开发打造个人体育赛事直播平台:创业新机遇

软件开发-梦幻运营部

软件测试学习笔记丨MQ - Message Queue消息队列和kafka基本使用

测试人

软件测试 自动化测试 测试开发

教你如何判断Java代码中异步操作是否完成

快乐非自愿限量之名

Java Python 项目开发 应用开发

OPPO打响AI手机第一枪

Openlab_cosmoplat

浙江丽水,正在用AI诊癌

Openlab_cosmoplat

白话大模型② | 如何提升AI分析的准确性?

星环科技

关于Python中math 和 decimal 模块的解析与实践

不在线第一只蜗牛

Python 开发语言 模块开发

AI PPT软件有哪些?这5款堪称神器,职场白领必备!

彭宏豪95

职场 PPT 在线白板 办公软件 AIGC

量化交易策略炒币系统开发

薇電13242772558

量化交易

SQL 创建数据库语句详解与实践指南

霍格沃兹测试开发学社

智达方通总经理蔡志宏先生受邀参与哈工大京津冀校友发展研讨会,共话科技创新与发展新篇章

智达方通

智达方通 企业绩效管理 预算管理 哈工大 校友会

2024年,提升Windows开发和使用体验实践 - 小工具篇

EquatorCoco

架构 工具 windows 工具分享

基于图数据库构建知识图谱平台应用实践

星环科技

Spring框架5.0版本发布相关的技术访谈_Java_Amit K Gupta_InfoQ精选文章