智能体刷屏的背后,是 AI 应用拐点的来临?AICon 北京站议程重磅公布,50+ 硬核分享不容错过 了解详情
写点什么

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:005454

评论

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

华为云大咖说:开发者应用AI大模型的“道、法、术”

华为云开发者联盟

人工智能 华为云 大模型 华为云开发者联盟 企业号2024年5月PK榜

API安全应该怎么做?

芯盾时代

网络安全 网关 API网关 零信任

AI 日报|硅谷 “鲁迅” 怒怼马斯克,炮轰 AI 界;前 OpenAI 安全主管入职友商 Anthropic

可信AI进展

公开课 | Python高频面试题解析公开课

测试人

软件测试 面试题

深入探索令牌桶限流的原理与实践

袋鼠云数栈

大数据 限流算法 令牌桶 令牌桶算法 数据服务

逆向海淘商业模式案例分析 :Hoobuy淘宝代购集运系统丨淘宝代购集运系统搭建

tbapi

淘宝代购系统 淘宝代购集运系统 Pandabuy 反向海淘系统 hoobuy

一键生成,效率翻倍,用AI赋能PPT制作

霍格沃兹测试开发学社

[ICLR 2024] 基于Pathways架构的自适应多尺度时间序列预测模型Pathformer

阿里云大数据AI技术

人工智能 自适应 论文 Iclr

Python高频面试题解析公开课

测吧(北京)科技有限公司

测试

行业诚信新标杆——行云绽放荣膺AAA级企业信用等级证书

行云管家

信息安全 企业信用等级证书 信用等级

星创编辑器在投放业务中的落地|得物技术

得物技术

前端 Web React 企业号 2024年5月 PK 榜

如何优雅实现存算分离:缓存及Tablespace讲解与演示

酷克数据HashData

存算分离

现代化实时数仓 SelectDB 再次登顶 ClickBench 全球数据库分析性能排行榜!

SelectDB

数据库 大数据 数据仓库 数据分析 云原生

2024数智科技大会:奇点云数据云平台敏捷版、GrowingIO多主体增长分析发布

先锋IT

Python高频面试题解析公开课

霍格沃兹测试开发学社

在 Kubesphere 中开启新一代云原生数仓 Databend

Databend

用 Baidu Comate 实现研发提效,百度营销服务团队打造“轻舸”加速营销智能化

百度Geek说

企业号 5 月 PK 榜 智能代码助手; 企业号2024年5月PK榜 Baidu Comate

“一键”掌控数据库特权,DpEasy 新版本即将启航

BinTools图尔兹

审计 备份 应用 特权账号管理

文献解读-遗传病-第三期|《Answer ALS,一种用于散发性和家族性 ALS 的大规模资源,结合了来自诱导多能细胞系的临床和多组学数据》

INSVAST

基因数据分析 生信服务

常州等保测评公司有哪些?电话多少?

行云管家

等保 等保测评 常州

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