Skip to main content

SpringBoot版本

版本对应​

Spring Boot

Spring

Maven

GRADLE

Spring BootSpringJavaMavenGRADLE
Spring Boot 3.2.x
3.2.5Spring Framework 6.1.6Java 17~223.6.3 or later7.5 or later ,8.x
Spring Boot 3.1.x
3.1.2Spring Framework 6.0.11Java 17~203.6.37.5以上,8.x
3.1.1Spring Framework 6.0.10Java 17~203.6.37.5以上,8.x
3.1.0Spring Framework 6.0.9Java 17~203.6.37.5以上,8.x
Spring Boot 3.0.x
3.0.9Spring Framework 6.0.11Java 17~203.5+7.5以上,8.x
3.0.8Spring Framework 6.0.10Java 17~203.5+7.5以上,8.x
3.0.7Spring Framework 6.0.9Java 17~203.5+7.5以上,8.x
3.0.6Spring Framework 6.0.8Java 17~203.5+7.5以上,8.x
3.0.5Spring Framework 6.0.7Java 17~203.5+7.5以上,8.x
3.0.4Spring Framework 6.0.6Java 17~193.5+7.5以上,8.x
3.0.3Spring Framework 6.0.5Java 17~193.5+7.5以上,8.x
3.0.2Spring Framework 6.0.4Java 17~193.5+7.5以上,8.x
3.0.1Spring Framework 6.0.3Java 17~193.5+7.5以上,8.x
3.0.0Spring Framework 6.0.2Java 17~193.5+7.5以上,8.x
Spring Boot 2.7.x
2.7.14Spring Framework 5.3.29Java 8~203.5+6.8x,6.9x,7.x
2.7.13Spring Framework 5.3.28Java 8~203.5+6.8x,6.9x,7.x
2.7.12Spring Framework 5.3.27Java 8~203.5+6.8x,6.9x,7.x
2.7.11Spring Framework 5.3.27Java 8~203.5+6.8x,6.9x,7.x
2.7.10Spring Framework 5.3.26Java 8~203.5+6.8x,6.9x,7.x
2.7.9Spring Framework 5.3.25Java 8~193.5+6.8x,6.9x,7.x
2.7.8Spring Framework 5.3.25Java 8~193.5+6.8x,6.9x,7.x
2.7.7Spring Framework 5.3.24Java 8~193.5+6.8x,6.9x,7.x
2.7.6Spring Framework 5.3.24Java 8~193.5+6.8x,6.9x,7.x
2.7.5Spring Framework 5.3.23Java 8~193.5+6.8x,6.9x,7.x
2.7.4Spring Framework 5.3.23Java 8~193.5+6.8x,6.9x,7.x
2.7.3Spring Framework 5.3.22Java 8~183.5+6.8x,6.9x,7.x
2.7.2Spring Framework 5.3.22Java 8~183.5+6.8x,6.9x,7.x
2.7.1Spring Framework 5.3.21Java 8~183.5+6.8x,6.9x,7.x
2.7.0Spring Framework 5.3.20Java 8~183.5+6.8x,6.9x,7.x
Spring Boot 2.6.x
2.6.15Spring Framework 5.3.27Java 8~193.5+6.8x,6.9x,7.x
2.6.14Spring Framework 5.3.24Java 8~193.5+6.8x,6.9x,7.x
2.6.13Spring Framework 5.3.23Java 8~193.5+6.8x,6.9x,7.x
2.6.12Spring Framework 5.3.23Java 8~193.5+6.8x,6.9x,7.x
2.6.11Spring Framework 5.3.22Java 8~183.5+6.8x,6.9x,7.x
2.6.10Spring Framework 5.3.22Java 8~183.5+6.8x,6.9x,7.x
2.6.9Spring Framework 5.3.21Java 8~183.5+6.8x,6.9x,7.x
2.6.8Spring Framework 5.3.20Java 8~183.5+6.8x,6.9x,7.x
2.6.7Spring Framework 5.3.19Java 8~173.5+6.8x,6.9x,7.x
2.6.6Spring Framework 5.3.18Java 8~173.5+6.8x,6.9x,7.x
2.6.5Spring Framework 5.3.17Java 8~173.5+6.8x,6.9x,7.x
2.6.4Spring Framework 5.3.16Java 8~173.5+6.8x,6.9x,7.x
2.6.3Spring Framework 5.3.15Java 8~173.5+6.8x,6.9x,7.x
2.6.2Spring Framework 5.3.14Java 8~173.5+6.8x,6.9x,7.x
2.6.1Spring Framework 5.3.13Java 8~173.5+6.8x,6.9x,7.x
2.6.0Spring Framework 5.3.13Java 8~173.5+6.8x,6.9x,7.x
Spring Boot 2.5.x
2.5.15Spring Framework 5.3.27Java 8~183.5+6.8x,6.9x,7.x
2.5.14Spring Framework 5.3.20Java 8~183.5+6.8x,6.9x,7.x
2.5.13Spring Framework 5.3.19Java 8~173.5+6.8x,6.9x,7.x
2.5.12Spring Framework 5.3.18Java 8~173.5+6.8x,6.9x,7.x
2.5.11Spring Framework 5.3.17Java 8~173.5+6.8x,6.9x,7.x
2.5.10Spring Framework 5.3.16Java 8~173.5+6.8x,6.9x,7.x
2.5.9Spring Framework 5.3.15Java 8~173.5+6.8x,6.9x,7.x
2.5.8Spring Framework 5.3.14Java 8~173.5+6.8x,6.9x,7.x
2.5.7Spring Framework 5.3.13Java 8~173.5+6.8x,6.9x,7.x
2.5.6Spring Framework 5.3.12Java 8~173.5+6.8x,6.9x,7.x
2.5.5Spring Framework 5.3.10Java 8~173.5+6.8x,6.9x,7.x
2.5.4Spring Framework 5.3.9Java 8~163.5+6.8x,6.9x,7.x
2.5.3Spring Framework 5.3.9Java 8~163.5+6.8x,6.9x,7.x
2.5.2Spring Framework 5.3.8Java 8~163.5+6.8x,6.9x,7.x
2.5.1Spring Framework 5.3.8Java 8~163.5+6.8x,6.9x,7.x
2.5.0Spring Framework 5.3.7Java 8~163.5+6.8x,6.9x,7.x
Spring Boot 2.4.x
2.4.13Spring Framework 5.3.13Java 8~163.5+6.3+
2.4.12Spring Framework 5.3.12Java 8~163.5+6.3+
2.4.11Spring Framework 5.3.10Java 8~163.5+6.3+
2.4.10Spring Framework 5.3.9Java 8~163.5+6.3+
2.4.9Spring Framework 5.3.9Java 8~163.5+6.3+
2.4.8Spring Framework 5.3.8Java 8~163.5+6.3+
2.4.7Spring Framework 5.3.8Java 8~163.5+6.3+
2.4.6Spring Framework 5.3.7Java 8~163.5+6.3+
2.4.5Spring Framework 5.3.6Java 8~163.5+6.3+
2.4.4Spring Framework 5.3.5Java 8~163.3+6.3+
2.4.3Spring Framework 5.3.4Java 8~153.3+6.3+
2.4.2Spring Framework 5.3.3Java 8~153.3+6.3+
2.4.1Spring Framework 5.3.2Java 8~153.3+6.3+
2.4.0Spring Framework 5.3.1Java 8~153.3+6.3+
Spring Boot 2.3.x
2.3.12.RELEASESpring Framework 5.2.15.RELEASEJava 8~153.3+6.3+
2.3.11.RELEASESpring Framework 5.2.15.RELEASEJava 8~153.3+6.3+
2.3.10.RELEASESpring Framework 5.2.14.RELEASEJava 8~153.3+6.3+
2.3.9.RELEASESpring Framework 5.2.13.RELEASEJava 8~153.3+6.3+
2.3.8.RELEASESpring Framework 5.2.12.RELEASEJava 8~153.3+6.3+
2.3.7.RELEASESpring Framework 5.2.12.RELEASEJava 8~153.3+6.3+
2.3.6.RELEASESpring Framework 5.2.11.RELEASEJava 8~153.3+6.3+
2.3.5.RELEASESpring Framework 5.2.10.RELEASEJava 8~153.3+6.3+
2.3.4.RELEASESpring Framework 5.2.9.RELEASEJava 8~143.3+6.3+
2.3.3.RELEASESpring Framework 5.2.8.RELEASEJava 8~143.3+6.3+
2.3.2.RELEASESpring Framework 5.2.8.RELEASEJava 8~143.3+6.3+
2.3.1.RELEASESpring Framework 5.2.7.RELEASEJava 8~143.3+6.3+
2.3.0.RELEASESpring Framework 5.2.6.RELEASEJava 8~143.3+6.3+
Spring Boot 2.2.x
2.2.13.RELEASESpring Framework 5.2.12.RELEASEJava 8~153.3+5.x,6.x
2.2.12.RELEASESpring Framework 5.2.12.RELEASEJava 8~153.3+5.x,6.x
2.2.11.RELEASESpring Framework 5.2.10.RELEASEJava 8~153.3+5.x,6.x
2.2.10.RELEASESpring Framework 5.2.9.RELEASEJava 8~143.3+5.x,6.x
2.2.9.RELEASESpring Framework 5.2.8.RELEASEJava 8~143.3+5.x,6.x
2.2.8.RELEASESpring Framework 5.2.7.RELEASEJava 8~143.3+5.x,6.x
2.2.7.RELEASESpring Framework 5.2.6.RELEASEJava 8~143.3+5.x,6.x
2.2.6.RELEASESpring Framework 5.2.5.RELEASEJava 8~133.3+5.x,6.x
2.2.5.RELEASESpring Framework 5.2.4.RELEASEJava 8~133.3+5.x,6.x
2.2.4.RELEASESpring Framework 5.2.3.RELEASEJava 8~133.3+5.x,6.x
2.2.3.RELEASESpring Framework 5.2.3.RELEASEJava 8~133.3+5.x,6.x
2.2.2.RELEASESpring Framework 5.2.2.RELEASEJava 8~133.3+5.x,6.x
2.2.1.RELEASESpring Framework 5.2.1.RELEASEJava 8~133.3+5.x
2.2.0.RELEASESpring Framework 5.2.0.RELEASEJava 8~133.3+5.x
Spring Boot 2.1.x
2.1.0.RELEASESpring Framework 5.1.2.RELEASEJava 8 or 93.3+4.4+
Spring Boot 2.0.x
2.0.6.RELEASESpring Framework 5.0.10.RELEASEJava 8 or 93.2+4.x
2.0.5.RELEASESpring Framework 5.0.9.RELEASE4.x
2.0.4.RELEASESpring Framework 5.0.8.RELEASE4
2.0.3.RELEASESpring Framework 5.0.7.RELEASE4
2.0.2.RELEASESpring Framework 5.0.6.RELEASE4
2.0.1.RELEASESpring Framework 5.0.5.RELEASE4
2.0.0.RELEASESpring Framework 5.0.4.RELEASE4

版本信息​

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 的配置文件,但它们有以下几个关键区别

  1. 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 里的变量。

  1. 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 项目。

  1. 核心区别总结
区别logback.xmllogback-spring.xml
Spring Boot 推荐❌(不推荐)✅(官方推荐)
支持 Spring 配置❌(不能解析 application.properties 变量)✅(可以解析 application.properties 变量)
加载时机Spring Boot 之前(不能使用 Spring 变量)Spring Boot 之后(能解析 Spring 变量)
支持 Spring Profile❌✅(支持 <springProfile>)
适用于普通 Java 项目✅❌
  1. 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。

  1. 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 里是无法使用的!

  1. 结论

什么时候用 logback.xml? ✅ 你不需要从 Spring Boot 配置 里获取变量。
✅ 你的项目 不是 Spring Boot 项目,而是普通 Java 项目。
✅ 你希望 Logback 尽早初始化(比 Spring Boot 更早)。

什么时候用 logback-spring.xml? ✅ 你想在 application.properties 或 application.yml 里定义日志路径。
✅ 你需要支持 Spring Profile,让不同环境使用不同的日志配置。
✅ 你希望 日志系统在 Spring Boot 之后加载,从而获取 Spring 配置。