SpringBoot版本
版本对应
| Spring Boot | Spring | Java | Maven | GRADLE |
|---|---|---|---|---|
| Spring Boot 3.2.x | ||||
| 3.2.5 | Spring Framework 6.1.6 | Java 17~22 | 3.6.3 or later | 7.5 or later ,8.x |
| Spring Boot 3.1.x | ||||
| 3.1.2 | Spring Framework 6.0.11 | Java 17~20 | 3.6.3 | 7.5以上,8.x |
| 3.1.1 | Spring Framework 6.0.10 | Java 17~20 | 3.6.3 | 7.5以上,8.x |
| 3.1.0 | Spring Framework 6.0.9 | Java 17~20 | 3.6.3 | 7.5以上,8.x |
| Spring Boot 3.0.x | ||||
| 3.0.9 | Spring Framework 6.0.11 | Java 17~20 | 3.5+ | 7.5以上,8.x |
| 3.0.8 | Spring Framework 6.0.10 | Java 17~20 | 3.5+ | 7.5以上,8.x |
| 3.0.7 | Spring Framework 6.0.9 | Java 17~20 | 3.5+ | 7.5以上,8.x |
| 3.0.6 | Spring Framework 6.0.8 | Java 17~20 | 3.5+ | 7.5以上,8.x |
| 3.0.5 | Spring Framework 6.0.7 | Java 17~20 | 3.5+ | 7.5以上,8.x |
| 3.0.4 | Spring Framework 6.0.6 | Java 17~19 | 3.5+ | 7.5以上,8.x |
| 3.0.3 | Spring Framework 6.0.5 | Java 17~19 | 3.5+ | 7.5以上,8.x |
| 3.0.2 | Spring Framework 6.0.4 | Java 17~19 | 3.5+ | 7.5以上,8.x |
| 3.0.1 | Spring Framework 6.0.3 | Java 17~19 | 3.5+ | 7.5以上,8.x |
| 3.0.0 | Spring Framework 6.0.2 | Java 17~19 | 3.5+ | 7.5以上,8.x |
| Spring Boot 2.7.x | ||||
| 2.7.14 | Spring Framework 5.3.29 | Java 8~20 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.13 | Spring Framework 5.3.28 | Java 8~20 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.12 | Spring Framework 5.3.27 | Java 8~20 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.11 | Spring Framework 5.3.27 | Java 8~20 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.10 | Spring Framework 5.3.26 | Java 8~20 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.9 | Spring Framework 5.3.25 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.8 | Spring Framework 5.3.25 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.7 | Spring Framework 5.3.24 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.6 | Spring Framework 5.3.24 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.5 | Spring Framework 5.3.23 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.4 | Spring Framework 5.3.23 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.3 | Spring Framework 5.3.22 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.2 | Spring Framework 5.3.22 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.1 | Spring Framework 5.3.21 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.7.0 | Spring Framework 5.3.20 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| Spring Boot 2.6.x | ||||
| 2.6.15 | Spring Framework 5.3.27 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.14 | Spring Framework 5.3.24 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.13 | Spring Framework 5.3.23 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.12 | Spring Framework 5.3.23 | Java 8~19 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.11 | Spring Framework 5.3.22 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.10 | Spring Framework 5.3.22 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.9 | Spring Framework 5.3.21 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.8 | Spring Framework 5.3.20 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.7 | Spring Framework 5.3.19 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.6 | Spring Framework 5.3.18 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.5 | Spring Framework 5.3.17 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.4 | Spring Framework 5.3.16 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.3 | Spring Framework 5.3.15 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.2 | Spring Framework 5.3.14 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.1 | Spring Framework 5.3.13 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.6.0 | Spring Framework 5.3.13 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| Spring Boot 2.5.x | ||||
| 2.5.15 | Spring Framework 5.3.27 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.14 | Spring Framework 5.3.20 | Java 8~18 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.13 | Spring Framework 5.3.19 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.12 | Spring Framework 5.3.18 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.11 | Spring Framework 5.3.17 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.10 | Spring Framework 5.3.16 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.9 | Spring Framework 5.3.15 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.8 | Spring Framework 5.3.14 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.7 | Spring Framework 5.3.13 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.6 | Spring Framework 5.3.12 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.5 | Spring Framework 5.3.10 | Java 8~17 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.4 | Spring Framework 5.3.9 | Java 8~16 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.3 | Spring Framework 5.3.9 | Java 8~16 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.2 | Spring Framework 5.3.8 | Java 8~16 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.1 | Spring Framework 5.3.8 | Java 8~16 | 3.5+ | 6.8x,6.9x,7.x |
| 2.5.0 | Spring Framework 5.3.7 | Java 8~16 | 3.5+ | 6.8x,6.9x,7.x |
| Spring Boot 2.4.x | ||||
| 2.4.13 | Spring Framework 5.3.13 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.12 | Spring Framework 5.3.12 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.11 | Spring Framework 5.3.10 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.10 | Spring Framework 5.3.9 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.9 | Spring Framework 5.3.9 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.8 | Spring Framework 5.3.8 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.7 | Spring Framework 5.3.8 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.6 | Spring Framework 5.3.7 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.5 | Spring Framework 5.3.6 | Java 8~16 | 3.5+ | 6.3+ |
| 2.4.4 | Spring Framework 5.3.5 | Java 8~16 | 3.3+ | 6.3+ |
| 2.4.3 | Spring Framework 5.3.4 | Java 8~15 | 3.3+ | 6.3+ |
| 2.4.2 | Spring Framework 5.3.3 | Java 8~15 | 3.3+ | 6.3+ |
| 2.4.1 | Spring Framework 5.3.2 | Java 8~15 | 3.3+ | 6.3+ |
| 2.4.0 | Spring Framework 5.3.1 | Java 8~15 | 3.3+ | 6.3+ |
| Spring Boot 2.3.x | ||||
| 2.3.12.RELEASE | Spring Framework 5.2.15.RELEASE | Java 8~15 | 3.3+ | 6.3+ |
| 2.3.11.RELEASE | Spring Framework 5.2.15.RELEASE | Java 8~15 | 3.3+ | 6.3+ |
| 2.3.10.RELEASE | Spring Framework 5.2.14.RELEASE | Java 8~15 | 3.3+ | 6.3+ |
| 2.3.9.RELEASE | Spring Framework 5.2.13.RELEASE | Java 8~15 | 3.3+ | 6.3+ |
| 2.3.8.RELEASE | Spring Framework 5.2.12.RELEASE | Java 8~15 | 3.3+ | 6.3+ |
| 2.3.7.RELEASE | Spring Framework 5.2.12.RELEASE | Java 8~15 | 3.3+ | 6.3+ |
| 2.3.6.RELEASE | Spring Framework 5.2.11.RELEASE | Java 8~15 | 3.3+ | 6.3+ |
| 2.3.5.RELEASE | Spring Framework 5.2.10.RELEASE | Java 8~15 | 3.3+ | 6.3+ |
| 2.3.4.RELEASE | Spring Framework 5.2.9.RELEASE | Java 8~14 | 3.3+ | 6.3+ |
| 2.3.3.RELEASE | Spring Framework 5.2.8.RELEASE | Java 8~14 | 3.3+ | 6.3+ |
| 2.3.2.RELEASE | Spring Framework 5.2.8.RELEASE | Java 8~14 | 3.3+ | 6.3+ |
| 2.3.1.RELEASE | Spring Framework 5.2.7.RELEASE | Java 8~14 | 3.3+ | 6.3+ |
| 2.3.0.RELEASE | Spring Framework 5.2.6.RELEASE | Java 8~14 | 3.3+ | 6.3+ |
| Spring Boot 2.2.x | ||||
| 2.2.13.RELEASE | Spring Framework 5.2.12.RELEASE | Java 8~15 | 3.3+ | 5.x,6.x |
| 2.2.12.RELEASE | Spring Framework 5.2.12.RELEASE | Java 8~15 | 3.3+ | 5.x,6.x |
| 2.2.11.RELEASE | Spring Framework 5.2.10.RELEASE | Java 8~15 | 3.3+ | 5.x,6.x |
| 2.2.10.RELEASE | Spring Framework 5.2.9.RELEASE | Java 8~14 | 3.3+ | 5.x,6.x |
| 2.2.9.RELEASE | Spring Framework 5.2.8.RELEASE | Java 8~14 | 3.3+ | 5.x,6.x |
| 2.2.8.RELEASE | Spring Framework 5.2.7.RELEASE | Java 8~14 | 3.3+ | 5.x,6.x |
| 2.2.7.RELEASE | Spring Framework 5.2.6.RELEASE | Java 8~14 | 3.3+ | 5.x,6.x |
| 2.2.6.RELEASE | Spring Framework 5.2.5.RELEASE | Java 8~13 | 3.3+ | 5.x,6.x |
| 2.2.5.RELEASE | Spring Framework 5.2.4.RELEASE | Java 8~13 | 3.3+ | 5.x,6.x |
| 2.2.4.RELEASE | Spring Framework 5.2.3.RELEASE | Java 8~13 | 3.3+ | 5.x,6.x |
| 2.2.3.RELEASE | Spring Framework 5.2.3.RELEASE | Java 8~13 | 3.3+ | 5.x,6.x |
| 2.2.2.RELEASE | Spring Framework 5.2.2.RELEASE | Java 8~13 | 3.3+ | 5.x,6.x |
| 2.2.1.RELEASE | Spring Framework 5.2.1.RELEASE | Java 8~13 | 3.3+ | 5.x |
| 2.2.0.RELEASE | Spring Framework 5.2.0.RELEASE | Java 8~13 | 3.3+ | 5.x |
| Spring Boot 2.1.x | ||||
| 2.1.0.RELEASE | Spring Framework 5.1.2.RELEASE | Java 8 or 9 | 3.3+ | 4.4+ |
| Spring Boot 2.0.x | ||||
| 2.0.6.RELEASE | Spring Framework 5.0.10.RELEASE | Java 8 or 9 | 3.2+ | 4.x |
| 2.0.5.RELEASE | Spring Framework 5.0.9.RELEASE | 4.x | ||
| 2.0.4.RELEASE | Spring Framework 5.0.8.RELEASE | 4 | ||
| 2.0.3.RELEASE | Spring Framework 5.0.7.RELEASE | 4 | ||
| 2.0.2.RELEASE | Spring Framework 5.0.6.RELEASE | 4 | ||
| 2.0.1.RELEASE | Spring Framework 5.0.5.RELEASE | 4 | ||
| 2.0.0.RELEASE | Spring Framework 5.0.4.RELEASE | 4 |
版本信息
3.1
-- 3.1.x 2023-05-18 ~ 2024-05-18 ~ 2025-08-18
-- 环境要求
JDK
17 ~ 20
Spring 6.0.9+
Maven 3.6.3+
Gradle 7.5+,8.x
-- 移除 HttpClient 4
取而代之的则是 Apache HttpClient 5
Spring 6 删除了 RestTemplate 对 Apache HttpClient 4 的支持
而Spring Boot 3.0 同时包含了 HttpClient 4 和 HttpClient 5 两个依赖的管理
,如果同时管理这两个版本
,有的人可能会继续使用 HttpClient 4
,应用程序在使用 RestTemplate 时可能会有潜在的错误
,导致诊断困难
-- 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;
}
-- Spring Authorization Server 自动配置
Spring
Boot 3.1 提供了一个 spring-boot-starter-oauth2-authorization-server 启动器
,可以支持 Spring Authorization Server 的自动配置
,轻松配置基于 Servlet 的 OAuth2 授权服务器
-- 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
-- SSL 配置
Java KeyStore 和 PEM 编码证书等 SSL 信任相关的资料
,现在可以使用 properties 属性进行配置
,并且可以适用于各种类型的连接
,例如嵌入式 Web 服务器
、数据服务
、RestTemplate 和 WebClient
。
-- 服务连接
Spring Boot 3.1 引入了一个新的服务连接概念
,这是一个低级别的功能
,旨在作为其他高级功能的构建块
,这些高级功能可以通过定义 ConnectionDetails Bean 自动配置服务连接
。
ConnectionDetails Bean 提供了建立
、删除服务连接所需的详细信息
,并且 Spring Boot 的自动配置也已经支持
,当这些 Bean 可用时
,它们将优先于任何与连接相关的配置参数
,但是
,与连接本身无关的配置参数
(比如
:控制连接池大小和行为的参数
)仍将使用
。
3.0
-- 3.0.x 2022-11-24 ~ 2023-11-24 ~ 2025-02-24
-- 环境要求
JDK
17 ~ 19
Spring 6.0.2+
Maven 3.5+
Gradle 7.5+
2.7
-- 2.7.x 2022-05-19 ~ 2023-11-18 ~ 2025-02-18
-- 环境要求
JDK
8 ~ 20
Spring 5.3.27+
Maven 3.5+
Gradle 6.8.x, 6.9.x, 7.x, 8.x
2.2.x
Logback
从 Spring Boot 2.2 开始,官方 移除了这些默认的 Logback 配置文件,因此不能再使用
<include>方式 直接引入默认的 Logback 配置,而需要 手动定义 logback-spring.xml 进行等效配置。
<configuration>
<!-- 定义日志文件目录 -->
<property name="LOG_PATH" value="./logs" />
<!-- 控制台日志输出(等效于 console-appender.xml) -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 日志文件输出(等效于 file-appender.xml) -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/app.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/app-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 只保留最近 30 天的日志 -->
</rollingPolicy>
</appender>
<!-- 全局日志级别 -->
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
logback.xml 和 logback-spring.xml 区别
在 Spring Boot 项目中,
logback.xml和logback-spring.xml都可以作为 Logback 的配置文件,但它们有以下几个关键区别
logback.xml
- 标准 Logback 配置文件(与 Spring Boot 无关)。
- Spring Boot 不会解析其中的 Spring 配置(如
SpringProperty或占位符${})。 - Logback 会在 Spring Boot 之外的环境中正常使用它(例如,非 Spring Boot 项目也可以使用)。
- 由于 Spring Boot 在日志系统初始化之前就会加载
logback.xml,所以Spring Boot 的application.properties里的日志配置不会被解析。
📝 适用场景
✅ 适用于 非 Spring Boot 项目 或 不需要使用 Spring 变量 的日志配置。
❌ 不支持 Spring Boot application.properties 里的变量。
logback-spring.xml
- Spring Boot 推荐使用的 Logback 配置文件。
- 允许使用
SpringProperty以及${}解析application.properties里的变量。 - 日志系统会在 Spring Boot 加载
application.properties之后初始化,这样就能正确解析 Spring 配置的变量。
📝 适用场景
✅ 适用于 Spring Boot 项目,可以使用 application.properties 里的日志变量。
✅ 支持 Spring Profile,可以在 logback-spring.xml 里用 <springProfile> 标签来区分环境。
❌ 不能被标准的 Logback 直接使用,仅适用于 Spring Boot 项目。
- 核心区别总结
| 区别 | logback.xml | logback-spring.xml |
|---|---|---|
| Spring Boot 推荐 | ❌(不推荐) | ✅(官方推荐) |
| 支持 Spring 配置 | ❌(不能解析 application.properties 变量) | ✅(可以解析 application.properties 变量) |
| 加载时机 | Spring Boot 之前(不能使用 Spring 变量) | Spring Boot 之后(能解析 Spring 变量) |
| 支持 Spring Profile | ❌ | ✅(支持 <springProfile>) |
| 适用于普通 Java 项目 | ✅ | ❌ |
logback-spring.xml的优势 如果你希望在application.properties中配置日志路径:
LOG_FILE=./logs/myapp.log
然后在 logback.xml 里使用:
<property name="LOG_FILE" value="${LOG_FILE}"/>
💥 这在 logback.xml 里是无效的,因为 logback.xml 加载时,Spring Boot 还没有解析 application.properties,导致 LOG_FILE 变量为空。
✅ 解决方案:改用 logback-spring.xml
<configuration>
<springProperty name="LOG_FILE" source="LOG_FILE"/>
<property name="LOG_FILE" value="${LOG_FILE:-./logs/default.log}"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="FILE"/>
</root>
</configuration>
💡 这样 LOG_FILE 就能从 application.properties 读取,如果没有定义,则使用默认值 ./logs/default.log。
- Spring Profile 的支持(仅限
logback-spring.xml) 在logback-spring.xml中,你可以针对不同的环境(dev、prod)使用<springProfile>:
<springProfile name="dev">
<property name="LOG_FILE" value="./logs/dev.log"/>
</springProfile>
<springProfile name="prod">
<property name="LOG_FILE" value="./logs/prod.log"/>
</springProfile>
如果 Spring Boot 运行时指定了 spring.profiles.active=prod,那么 LOG_FILE 就会使用 ./logs/prod.log。
⚠️ 这个功能在 logback.xml 里是无法使用的!
- 结论
什么时候用 logback.xml?
✅ 你不需要从 Spring Boot 配置 里获取变量。
✅ 你的项目 不是 Spring Boot 项目,而是普通 Java 项目。
✅ 你希望 Logback 尽早初始化(比 Spring Boot 更早)。
什么时候用 logback-spring.xml?
✅ 你想在 application.properties 或 application.yml 里定义日志路径。
✅ 你需要支持 Spring Profile,让不同环境使用不同的日志配置。
✅ 你希望 日志系统在 Spring Boot 之后加载,从而获取 Spring 配置。