Spring Boot 最后一个 2.x 的版本 2.7.x 已经停止维护,3.0.x 也停止维护了,商业支持的版本也只有 2.6.x 了,2.5.x 以下的版本彻底退出历史舞台。。
从路线图可以看到每个版本的终止时间,包括最新的 Spring Boot 3.2.0,也会在一年后寿终正寝,所以,Spring Boot 2 的停止维护是预知的必然结果,Spring 团队只会把更多的时间和资源集中在新版本的开发和维护上,这也是为了推动整个 Java 生态系统向前发展。
同时,Spring Boot 还一次性发布了四个版本:
所以,3.0.13 和 2.7.18 可能是该版本线最后一个版本了,而 2.7.18 则是支持 Java 8 的最后一个版本了。
来看看最新的 3.2.0 新特性!!
Spring Boot 3.0.0 开始支持并最低要求 Java 17,Spring Boot 3.1.5 开始支持 Java 21 了。
对 Java 开发环境的要求对比表:
Spring Boot | JDK | Spring | Maven | Gradle |
---|---|---|---|---|
3.2.0 | 17 ~ 21 | 6.1.1+ | 3.6.3+ | 7.5+,8.x |
3.1.0 | 17 ~ 20 | 6.0.9+ | 3.6.3+ | 7.5+,8.x |
3.0.0 | 17 ~ 19 | 6.0.2+ | 3.5+ | 7.5+ |
2.7.12 | 8 ~ 20 | 5.3.27+ | 3.5+ | 6.8.x, 6.9.x, 7.x, 8.x |
支持 Java 8 的最后一个 Spring Boot 2.x 系列版本已经退伍啦,Java 17 的新时代到来,如果你还停留在 Java 8 就 OUT 了,过去一年,Java 8 腰斩!Java 17 暴涨 430%!!
什么是虚拟线程?
虚拟线程是一种成本低廉、轻量级的用户模式的线程实现,也就是传说中的 “协程”,它可以充分利用可用硬件,大幅减少编写、维护和监测高并发应用的工作量。我们都知道使用线程是要十分注意的,因为线程的创建、销毁都十分消耗系统资源,所以有了线程池,但这还不够,因为线程的数量是有限的,线程会阻塞操作系统线程,无法尽可能的提高吞吐量。
因为使用线程的成本很高,所以才会有了虚拟线程,它是用户态线程,成本是相当低廉的,调度也完全由用户进行控制(JDK 中的调度器),它同样可以进行阻塞,但不用阻塞操作系统线程,充分提高了硬件利用率,高并发也上了一个量级,从而实现了高吞吐量。
Java 19 初次引入虚拟线程,在 Java 21 中正式转正生产可用。
Spring Boot 3.1.5 做了对 Java 21 的兼容,Spring Boot 3.2.0 正式可以支持 Java 21 中的虚拟线程了,只需要添加以下配置即可:
spring.threads.virtual.enabled = true
具体用法,请关注我的后续推送哈。
Spring Boot 3.2.0 添加了对 CRaC 的初始支持,CRaC 全称为:Coordinated Restore at Checkpoint,这是一个 OpenJDK 支持的项目,它主要处理对 Java 应用程序进行设置检查点(制作图像,快照)而不影响其执行,并能通过检查点进行恢复。
详细介绍如下:
https://openjdk.org/projects/crac/
当 SSL bundles 相关密钥信息发生变化时,现在可以支持自动重载了。
目前支持 SSL Bundle 重载的 Web 服务器:·
需要在 SSL Bundle 中设置 reload-on-update = true,参考示例如下:
spring.ssl.bundle.pem.mybundle.reload-on-update=true spring.ssl.bundle.pem.mybundle.keystore.certificate=file:/some/directory/application.crt spring.ssl.bundle.pem.mybundle.keystore.private-key=file:/some/directory/application.key
文件监视器会监视密钥文件,如果该文件发生变化,SSL Bundle 包将重新加载。
1)现在可以使用 Micrometer 的各种注解,包括:@Timed
、@Counted
、@NewSpan
、@ContinueSpan
、@Observed
等,如果集成了 AspectJ,这些切面将会自动配置。
2)Micrometer 追踪使用的 ObservationHandler
相关 Beans 现在会自动注册到 ObservationConfig 配置类上。
3)B3 追踪传播的默认格式由 single-no-parent
变更为 single
。
4)现在已对 @Scheduled
注解的方法进行可观测性支持。
5)现在添加了对 R2DBC
的可观察性支持。
Spring Boot 3.2.0 对大量 Spring 库和第三方类库都得到了更新。
还添加对以下技术的支持和改进:
几个重要的变更项:
1)移除 OkHttp 3,并支持 OkHttp 4。
2)参数 management.metrics.tags.
被 management.observations.key-values.
替代。
3)LoggingSystemProperties 和 LogbackLoggingSystemProperties 类中的许多常量被移除,被相关枚举替代。
4)Flyway 参数变更, flyway.oracle*
被 flyway.oracle.*
替代,spring.flyway.sql-server-kerberos-login-file
被 spring.flyway.sqlserver.kerberos-login-file
替代。
5)线程池变更,TaskExecutorBuilder
类被 ThreadPoolTaskExecutorBuilder
类替代,TaskSchedulerBuilder
类被 ThreadPoolTaskSchedulerBuilder
类替代。
更多细节可以参考官方发布说明:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2.0-Release-Notes
Spring Boot 这次的变化还挺大的,特别是 Spring Boot 2.x 系列的停止维护,还有 Spring Boot 3.2.0 全新支持虚拟线程的版本。
不管怎么样,还是不要迷恋过去了,所有版本都将是历史,作为一个技术人,我们要向前看,不断更新自己的知识和技能才是最重要的。
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。