Spring Boot 2.2首个里程碑版本发布,改进性能和内存使用

2019 年 3 月 19 日

Spring Boot 2.2首个里程碑版本发布,改进性能和内存使用

Spring Boot 团队最近发布了2.2.0 M1 版本,这是Spring Boot 2.2 的首个里程碑版本。它包括性能和内存方面的改进、Kubernetes 检测及第三方库更新。该版本解决了 140 多个问题

自该版本起,默认情况下将禁用 JMX。来自 Spring 团队的 Brian Clozel 指出:

“该功能看起来没有得到广泛的应用,并且占用了大量资源,因此,我们正在重新考虑其在 2.2 系列版本中的默认使用问题。”

其他启动性能改进包括:提供全局延迟初始化、删除冗余 JPA 扫描、大型配置文件的更快绑定及更高效的 bean 创建和注入。

全局延迟初始化(通过 spring.main.lazy.initialization 启用)是 2.2 版本引入的一个值得注意的新功能,通过延迟所有 bean 的创建显著地减少启动时间。然而,这需要做出权衡。随着所需 bean 的初始化,对 HTTP 资源的初始请求延迟可能会增加,后续请求则不受影响。另一个可能更具风险的权衡是,通常在启动时会发生的任何与 bean 有关、连接或依赖项错误都会延迟到启动后发生。

通过禁用其他 JPA 扫描(如:Hibernate)改善了启动性能。Spring Boot 已经提供了自己的 JPA 扫描,因而,所有其他扫描都是冗余,只会使应用程序启动时间变长。

大型配置文件的绑定是在启动时必须要进行的过程,现在明显变快了。这看起来是深受用户欢迎的改变,正如一个 Reddit 用户指出,对于先前的版本,“……在启动时加载 YAML 文件(大约 5000 个属性)需要 10 秒钟。”

因为 bean 的创建和注入已经直接影响了启动时间和内存使用,所以,Spring Boot 如今在选择创建和注入哪个 bean 方面变得更加明智。特别是现在只有在 actuator 被启用和暴露(例如通过 HTTP)的情况下,才创建与 Spring Boot actuator 相关的端点。关于在自动配置中使用 bean 方面也变得更明智。如果只是部分自动配置使用 bean,但总是注入到构造函数中,那么就没必要创建和注入到那些甚至不用的其他部分。具体来说,如今自动配置对依赖 bean 的使用更加精准。

@ConditionalOnCloudPlatform 注解可以通过检测应用程序何时在 Kubernetes 平台上运行来接收更新。这使得用户或其他框架易于有条件地配置只应用于 Kubernetes 的功能或实现。

在依赖方面,AssertJ、Mockito、Kafka、Spring HATEOAS 及 Spring Data 是一些升级了的著名第三方库。其他一些依赖项也进行了升级。

Java EE 依赖项也有变化。所有 Java EE 依赖项用等效的 Jakarta EE 依赖项替换。这是从 Java EE 到 Jakarta EE 迁移的一部分,是 Eclipse 基金会下 EE 的新名称。

里程碑版本是 Spring Boot 版本开发周期中的重大事件。它们表明版本正在巩固,并且大多数主要错误和问题已经得到了解决。它们通常预示最终版本即将发布,主要用于微调和润色剩余问题。2.0 系列中的过往版本有 4 到 7 个里程碑版本。

阅读英文原文: Spring Boot 2.2 Reaches First Milestone Release With Performance and Memory Improvements

2019 年 3 月 19 日 08:00 5981
用户头像

发布了 199 篇内容, 共 63.4 次阅读, 收获喜欢 268 次。

关注

评论

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

Apache Pulsar 社区周报:08-15 ~ 08-21

Apache Pulsar

云原生 Apache Pulsar 消息系统 消息中间件

第十一周学习总结

菲尼克斯

week11作业1

极客大学架构师训练营

极客大学架构师训练营第十一周学习总结

竹森先生

【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

冰河

高并发 架构设计 分布式限流 秒杀系统 异步削峰

Week 11命题作业

Jeremy

安全架构和高可用系统的架构

周冬辉

高可用系统的架构

第11周学习总结

刘卓

系统稳定高可用的方案以及用户密码验证函数

Acker飏

Week 11 作业

鱼_XueTr

etcd的高可用

阿飞

极客大学架构师训练营 0 期 week 11 学习笔记

chun1123

安全 高可用系统的架构

极客大学架构师训练营 0 期 week 11 作业

chun1123

高可用 密码校验

系统不可用的原因和解决方案

李广富

架构师训练营 第11周总结

Glowry

第11周作业

刘卓

架构师训练营 Week 11 作业

Wancho

架构师训练营 Week 11 总结

Wancho

架构师训练营第 0 期第 11 周作业

无名氏

用户密码验证函数

耕夫

第十一周命题作业

菲尼克斯

系统高可用

阿飞

架构师

架构师训练营第十一周作业

子豪sirius

极客时间架构师训练营 - week11 - 作业 2

jjn0703

极客大学架构师训练营

架构师训练营 第十一周 作业

CR

Flink算子状态-9

小知识点

scala 大数据 flink

Newbe.Claptrap 框架入门,第四步 —— 利用 Minion,商品下单

newbe36524

云计算 微服务 dock .net core ASP.NET Core

云上度假村木莲庄酒店助你远离城市的喧嚣

InfoQ_967a83c6d0d7

架构师训练营 第十一周 总结

CR

架构师训练营 - 第 11 周作业

Jam

用户密码验证函数

周冬辉

加密

Spring Boot 2.2首个里程碑版本发布,改进性能和内存使用-InfoQ