# Spring Boot版本更新 - 3.1正式发布,你还升得动吗
Spring Boot在2023年正式发布3.1版本,这个改变Java Web开发方式的框架,在变得越来越强大。
# 版本升级主要特性
# Spring Boot 3.1
- 移除Apache HttpClient 4,由 HttpClient 5取代;
ServletRegistrationBean
和FilterRegistrationBean
注册失败时抛出异常IllegalStateException
,而不是打警告日志;- Hibernate升级到6.2;
- Jackson升级到2.15;
- Mockito升级到5.3;
- 新增
spring-boot-docker-compose
模块; - 新增
Testcontainers
,方便在开发时管理外部服务; Spring Authorization Server
自动配置等
# Spring Boot 3.0
变更巨大,比较大的变化有:
- JDK最低也要JDK 17了;
- 更贴近云原生,使用GraalVM和Native Build Tools将应用打包成可执行文件;
- 大量第三方库的升级;
# Spring Boot 2.7
- OkHttp升级版本4;
- 新增
spring-boot-starter-graphql
;
# Spring Boot 2.6
info
提供Java Runtime信息;
# Spring Boot 2.5
- 支持环境变量前缀
application.setEnvironmentPrefix("myapp")
; - HTTP/2 over TCP;
- 支持 Java 16;
# Spring Boot 2.4
- Spring 5.4;
- R2DBC支持改为模块
spring-r2dbc
; - 支持Java 15;
# Spring Boot 2.3
- 支持Java 14;
- Liveness和Readiness探针;
- 支持R2DBC;
# Spring Boot 2.2
- Spring 5.2;
- JMX默认关闭;
- 添加JDK 13的支持,Java 8和Java11依旧支持;
- Kubernetes detection;
# Spring Boot 2.1
- Spring 5.1;
- 支持JDK 11;
- 支持Kafka streams;
- 自动配置的exclusion优化;
# Spring Boot 2.0
- 最低要求JDK 8;
- 基于Spring 5;
- 引入响应式编程如WebFlux;
- 支持HTTP/2;
- 数据池化使用HikariCP;
- Actuator endpoint的升级等
# 你还升得动吗
许多程序员都喜欢新技术、新框架,但稳定性才是产品与服务的关键。而升级框架就会带来巨大的工作量和风险,这不是谁都愿意去承担的。目前,我还维护着1.5的项目,也有2.6的新项目。3.X要求JDK17,大多公司应该是很难升了。
但各版本支持的时长是有限的,要不要更新就看财力了。
显然是越晚出生,活得越久。
# 各版本对JDK的支持
各种版本对Java版本的支持如下表,我们要升级Spring Boot的同时,要考虑是否需要同时升级JDK。
Release | Java |
---|---|
3.1 | 17 - 20 |
3.0 | 17 - 19 |
2.6 - 2.7 | 8 - 19 |
2.5 | 8 - 18 |
2.4 | 8 - 16 |
2.2 - 2.3 | 8 - 15 |
2.1 | 8 - 12 |
2.0 | 8 - 9 |
1.5 | 6 - 8 |
References: Spring Boot 3.1 Release Notes (opens new window)
https://endoflife.date/spring-boot
https://stackoverflow.com/questions/42659920/is-there-a-compatibility-matrix-of-spring-boot-and-spring-cloud