Spring Boot 3.1 正式发布
Spring Boot 3.0 发布半年左右,Spring Boot 3.1 正式发布了:
同时发布更新的还有 2.7.x 版本,同时,2.6.x 版本线已经停止维护了,最新支持版本如下图所示:
2.7.x 这也是目前唯一正在维护的 2.x 版本线了,商业支持的版本也只有 2.5.x 了。
Spring Boot 3.0 重大新特性
看了下,Spring Boot 3.1 更新了不少内容,今天就简单分享下几个重要的更新。
1、最低环境要求
Spring Boot 3.0 的发布,其最低要求 Java 17,并向上兼容支持 Java 19,Spring Boot 3.1 可以支持 Java 20 了,因为前段时间 Java 20 发布了。
对 Java 开发环境的要求对比表:
Spring Boot | JDK | Spring | Maven | Gradle |
---|---|---|---|---|
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 |
2、大量依赖升级
Spring Boot 3.1 最低支持的 Spring 框架也变成了 Spring 6.0.9+,除此之外,Spring Boot 管理的大量第三方的技术依赖也有大幅度的的升级,具体可以参考官方版本发布文档:
https://github.com/spring-projects/spring-boot/releases/tag/v3.1.0
以上这些技术的升级对于 Spring Boot 应用的升级也是一头拦路虎。
3、移除 HttpClient 4
因为 Spring 6 删除了 RestTemplate 对 Apache HttpClient 4 的支持,取而代之的则是 Apache HttpClient 5。
而 Spring Boot 3.0 又同时包含了 HttpClient 4 和 HttpClient 5 两个依赖的管理,如果同时管理这两个版本,有的人可能会继续使用 HttpClient 4,应用程序在使用 RestTemplate 时可能会有潜在的错误,导致诊断困难。
所以,Spring Boot 3.1 移除了 HttpClient 4 的依赖管理,转而逼迫用户强制使用 HttpClient 5,大家有依赖 HttpClient 4 的升级时需要注意了。
4、Servlet 和 Filter 注册失败时抛异常
大家知道,Spring Boot 注册 Servlet 和 Filter 时用的 ServletRegistrationBean 和 FilterRegistrationBean 这两个类,之前注册失败时是记录 warn 级别的日志,现在则是直接抛出 IllegalStateException 异常。
如果不想注册失败抛出异常,还是想像以前一样记录 warn 警告日志,可以调用这两个类的 setIgnoreRegistrationFailure(true) 方法,即忽略注册失败,使用示例如下:
@Bean
public ServletRegistrationBean registerServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new RegisterServlet(), "/registerServlet");
servletRegistrationBean.addInitParameter("type", "初始化参数1");
servletRegistrationBean.addInitParameter("name", "初始化参数2");
servletRegistrationBean.setIgnoreRegistrationFailure(true);
return servletRegistrationBean;
}
5、Spring Authorization Server 自动配置
Spring Boot 3.1 提供了一个 spring-boot-starter-oauth2-authorization-server 启动器,可以支持 Spring Authorization Server 的自动配置,轻松配置基于 Servlet 的 OAuth2 授权服务器。
6、Docker Compose 新模块
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,即官方容器编排工具,它可以轻松地定义多个容器之间的依赖关系、环境变量、网络设置等,并通过一个命令即可创建、启动和连接这些容器。
Spring Boot 3.1 提供了一个新模块:spring-boot-docker-compose,它支持与 Docker Compose 集成,当 Spring Boot 应用启动时,它会在当前工作目录中查找配置文件。
支持以下几种配置文件:
-
compose.yaml
-
compose.yml
-
docker-compose.yaml
-
docker-compose.yml
7、SSL 配置
Java KeyStore 和 PEM 编码证书等 SSL 信任相关的资料,现在可以使用 properties 属性进行配置,并且可以适用于各种类型的连接,例如嵌入式 Web 服务器、数据服务、RestTemplate 和 WebClient。
8、服务连接
Spring Boot 3.1 引入了一个新的服务连接概念,这是一个低级别的功能,旨在作为其他高级功能的构建块,这些高级功能可以通过定义 ConnectionDetails Bean 自动配置服务连接。
ConnectionDetails Bean 提供了建立、删除服务连接所需的详细信息,并且 Spring Boot 的自动配置也已经支持,当这些 Bean 可用时,它们将优先于任何与连接相关的配置参数,但是,与连接本身无关的配置参数(比如:控制连接池大小和行为的参数)仍将使用。
Spring Boot 最新支持版本
整理了下 Spring Boot 的最新版本支持情况:
版本 | 发布时间 | 停止维护时间 | 停止商业支持 |
---|---|---|---|
3.1.x | 2023-05-18 | 2024-05-18 | 2025-08-18 |
3.0.x | 2022-11-24 | 2023-11-24 | 2025-02-24 |
2.7.x | 2022-05-19 | 2023-11-18 | 2025-02-18 |
2.6.x | 2021-12-17 | 2022-11-24 | 2024-02-24 |
2.5.x | 2021-05-20 | 已停止 | 2023-08-24 |
2.4.x | 2020-11-12 | 已停止 | 2023-02-23 |
2.3.x | 2020-05-15 | 已停止 | 已停止 |
2.2.x | 2019-10-16 | 已停止 | 已停止 |
2.1.x | 2018-10-10 | 已停止 | 已停止 |
2.0.x | 2018-03-01 | 已停止 | 已停止 |
1.5.x | 2017-01-30 | 已停止 | 已停止 |
话说你们用的哪个 Spring Boot 版本?
参考资料
更多参考官方文档:
https://docs.spring.io/spring-boot/docs/3.1.0/reference/html/web.html
虽然目前SpringBoot 3.1已经发布,但由于其最低要求Java 17,目前主流版本还是SpringBoot 2.7。