Spring Boot版本新特性
本文结合官方文档与技术社区深度解析Spring Boot历代版本核心特性,按版本分类呈现关键演进路径。
# 1.0(2014 年 4 月)
官网链接:
主要特性:
- 自动配置(Auto-Configuration):基于类路径依赖自动配置Spring组件,减少XML配置。
- 起步依赖(Starters):通过
spring-boot-starter-*
简化依赖管理,例如spring-boot-starter-web
自动引入Web开发所需库。 - 嵌入式容器:内置Tomcat、Jetty和Undertow,支持
java -jar
直接运行。 - 外部化配置:支持
application.properties
和YAML文件,通过@Value
注解注入配置。 - Spring Boot CLI:命令行工具快速创建项目原型(如
spring init
)。
# 1.1
官网链接:
主要特性:
- 模板引擎支持:集成
Thymeleaf
、FreeMarker
、Groovy
、Velocity
等模板引擎,简化视图层开发。 - 数据库迁移支持:新增
Flyway
和Liquibase
自动配置,支持数据库版本控制和迁移。 - 搜索引擎集成:提供
Elasticsearch
和Apache Solr
的开箱即用自动配置。 - 消息中间件支持:新增
HornetQ JMS
、Spring Integration
、Spring Web Services
等集成。 - 健康检查增强:改进健康检查端点,支持
Redis
、MongoDB
、RabbitMQ
等服务状态监控。
# 1.2
官网链接:
主要特性:
- Servlet 3.1支持:适配Tomcat 8和Jetty 9,支持异步I/O和WebSocket。
- Actuator增强:新增健康检查、环境信息等端点,提升运维能力。
- YAML配置支持:通过SnakeYAML库解析YAML文件,提高配置可读性。
# 1.3
官网链接:
主要特性:
- DevTools:支持热部署和自动重启,提升开发效率。
- 缓存抽象:整合Ehcache、Hazelcast等缓存框架,提供
@Cacheable
注解。 - 完全可执行Jar:支持通过
spring-boot-maven-plugin
生成独立运行的Jar包。
# 1.4
官网链接:
主要特性:
- 测试增强:引入
@SpringBootTest
、@MockBean
和@SpyBean
注解,简化测试配置和Mock对象创建。 - 数据库支持扩展:新增
Couchbase
、Neo4J
、Redis Spring Data repositories
等NoSQL数据库的完整自动配置。 - HTTP客户端改进:引入
RestTemplateBuilder
,支持超时、拦截器、错误处理等高级配置。 - 启动失败分析:提供详细的启动错误诊断和分析,包括常见配置问题的解决建议。
- 缓存支持:新增
Caffeine
缓存的自动配置支持。
# 1.5(2017年1月)
官网链接:
主要特性:
- 动态日志级别管理:新增loggers端点,允许在运行时查看和更改应用程序日志级别,提供JMX和MVC端点。
- Apache Kafka支持:通过
spring-kafka
项目提供Kafka自动配置支持,配置spring.kafka.*
属性即可使用。 - Actuator安全改进:"敏感"端点默认变为安全的(即使没有Spring Security依赖),访问端点所需的默认角色从ADMIN更改为ACTUATOR。
- Cloud Foundry支持:Actuator模块增加对Cloud Foundry部署的额外支持,
/cloudfoundryapplication
路径为所有NamedMvcEndpoint bean提供替代的安全路由。 - LDAP支持:提供任何兼容LDAP服务器的自动配置,以及对Unbounded内嵌内存LDAP服务器的支持。
- 测试改进:新增
@JdbcTest
注解,支持在测试中排除自动配置。 - 其他改进:第三方库升级(Spring Data Ingalls、Jetty 9.4、JooQ 3.9等),自定义fat jar布局,JmsTemplate自定义,Mockito 2.x兼容性。
- 弃用和变化:移除HornetQ和Velocity支持,重命名一些starters,更新
@ConfigurationProperties
验证,弃用CRaSH shell支持。
# 2.0(2018年3月)
官网链接:
主要特性:
- Java要求提升:要求
Java 8
作为最低版本,兼容Java 9
,更新API以利用Java 8特性(如默认方法、函数回调和javax.time
等新API)。 - 响应式编程支持:一流的响应式应用支持,引入
Spring WebFlux
和WebFlux.fn
函数式编程模型,响应式支持扩展到Spring Data
、Spring Security
等组件,新增嵌入式Netty
服务器支持。 - Actuator重大改进:端点现在位于
/actuator
路径下,改进JSON负载格式,新的@Endpoint
编程模型,与Micrometer
深度集成进行指标监控和度量收集。 - 数据层革新:切换到
HikariCP
作为默认连接池(替代Tomcat连接池),增强配置属性绑定机制,改进数据库初始化逻辑,添加对InfluxDB
、LDAP
等新数据源的支持。 - 测试框架增强:新增
@WebFluxTest
注解支持响应式Web测试,改进切片测试(Slice Testing),添加ApplicationContextRunner
工具类简化上下文测试。 - HTTP/2全面支持:内置
Tomcat
、Undertow
和Jetty
均支持HTTP/2协议,显著提升网络性能(取决于Web服务器选择和应用环境)。 - Kotlin语言支持:官方支持
Kotlin 1.2.x
,提供Kotlin专用的DSL和扩展函数。 - 其他显著变化:
Quartz
调度器自动配置,改进JSON支持,Spring Boot的Gradle
插件完全重写,大量第三方库版本升级。
# 2.1
官网链接:
主要特性:
- Java 11长期支持:将
Java 11
作为LTS版本进行支持,同时保持对Java 8的兼容性。 - Actuator端点增强:健康检查端点支持分组配置(
management.endpoint.health.group.*
),新增缓存和集成图端点,扩展指标覆盖范围。 - Kotlin协程支持:优化异步代码可读性,完整适配
Kotlin 1.3+
,提供协程专用的Spring支持。 - 性能优化:启动时间和内存使用优化,引入
proxyBeanMethods=false
配置。 - OAuth2和安全增强:
OAuth2 WebFlux
支持,OAuth2资源服务器支持,改进安全配置。
# 2.2
官网链接:
主要特性:
- 懒加载性能优化:通过
spring.main.lazy-initialization=true
全局开启Bean懒加载,显著加快应用启动速度。 - RSocket响应式通信:提供
Reactive Streams
通信协议的完整集成,包括新的starter,增强微服务间高效交互。 - JUnit 5默认支持:将
JUnit Jupiter
设为默认测试框架,移除JUnit 4的默认依赖。 - 不可变配置属性:支持
@ConfigurationProperties
的不可变绑定,提升配置安全性。 - 健康检查分组:支持健康指标分组,便于不同环境下的健康状态管理。
- Java 13兼容性:完整支持Java 13的语言特性和JVM改进。
# 2.3
官网链接:
主要特性:
- 云原生镜像构建:通过
Cloud Native Buildpacks
直接使用Maven/Gradle插件(./mvnw spring-boot:build-image
)构建Docker兼容的OCI镜像,无需Dockerfile。 - 分层JAR支持:默认启用分层JAR,优化Docker镜像缓存和构建效率。
- 优雅停机增强:支持所有Web服务器(
Tomcat
、Jetty
、Undertow
、Netty
)的优雅停机,确保请求完整处理。 - Kubernetes就绪性探测:为
Kubernetes
环境提供开箱即用的Liveness
和Readiness
健康探测端点。 - R2DBC响应式数据库:提供完整的R2DBC自动配置,支持响应式数据库操作。
- Java 14支持:完整兼容Java 14的新特性和性能改进。
# 2.4
官网链接:
主要特性:
- 配置导入机制:引入
spring.config.import
机制,支持从外部文件或目录导入配置,提供比spring.profiles.include
更灵活的配置组织方式。 - 卷挂载配置树:支持卷挂载的配置树(Volume Mounted Config Trees),完美适配
Kubernetes ConfigMaps
和Secrets
的目录结构。 - Spring Native实验支持:适配
GraalVM
原生镜像编译,实现毫秒级启动时间和极低内存消耗。 - 分层JAR默认启用:分层JAR成为默认特性,显著优化容器化部署的构建效率。
- Java 15全面支持:兼容Java 15的所有新特性,包括文本块、记录类等。
# 2.5
官网链接:
主要特性:
- Docker镜像构建增强:支持通过环境变量配置
Buildpacks
构建器和运行镜像,提供更细粒度的镜像定制能力。 - 统一SQL初始化:引入
spring.sql.init.*
属性族,统一控制数据库初始化脚本执行,支持R2DBC和JDBC。 - 环境变量前缀配置:允许为特定属性源定义前缀,简化多应用环境下的配置管理。
- HTTP/2 over TCP(h2c):所有嵌入式Web容器支持HTTP/2 over TCP,无需手动配置。
- Java 16兼容性:完整支持Java 16的所有新特性和性能改进。
# 2.6
官网链接:
主要特性:
- 自动配置机制现代化:引入
@AutoConfiguration
注解和META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件,替代传统的spring.factories
方式,提升配置加载性能。 - GraphQL完整集成:提供
spring-boot-starter-graphql
,包含查询执行、异常处理、分页和排序等完整GraphQL开发支持。 - 容器化工具扩展:为集成测试添加
Podman
支持,扩展Testcontainers
的容器运行时选择。 - 路径匹配策略改进:默认路径匹配从
AntPathMatcher
升级为PathPatternParser
,提供更精确的URL匹配。 - SameSite Cookie支持:增强Cookie安全性配置选项。
# 2.7
官网链接:
主要特性:
- Spring GraphQL启动器:新增专用的Spring GraphQL starter,简化GraphQL应用开发和配置。
- RabbitStreamTemplate支持:为
RabbitMQ Streams
提供专用的模板支持,优化流式消息处理。 - Hazelcast @SpringAware:增强Hazelcast集成,支持
@SpringAware
注解进行Spring容器感知。 - SSL PEM证书支持:Web服务器SSL配置支持PEM格式证书,简化证书管理。
- Cache2k缓存支持:新增对
Cache2k
高性能缓存库的自动配置。 - 依赖重大升级:
Flyway 8.5
(SQL格式化和校验)、H2 2.1
(安全漏洞修复)、Elasticsearch 7.17
等。
# 3.0(2022 年 11 月)
官网链接:
主要特性:
- Jakarta EE 9全面迁移:完全替换
javax
命名空间为jakarta
,适配Tomcat 10+
、Jetty 11+
等新一代Servlet容器。 - AOT编译与GraalVM原生镜像:通过提前编译生成无JVM依赖的可执行文件,启动时间缩短90%,内存占用减少70%。
- Java 17基线要求:最低支持
Java 17
,移除对Java 8/11的支持,充分利用Java 17的性能改进和语言特性。 - 响应式Web增强:
WebFlux
支持多部分表单的流式处理(PartEvent
API),支持大文件上传的流式处理。 - 观测性升级:自动配置
Micrometer Observation API
、Micrometer Tracing
,提供统一的观测和追踪能力。 - 配置属性简化:简化
@ConstructorBinding
注解,支持记录(Record)类型的配置属性绑定。
# 3.1
官网链接:
主要特性:
- Testcontainers深度集成:通过
@ServiceConnection
注解自动注入容器化服务(如Redis
、MySQL
、PostgreSQL
等),支持开发时自动启动和配置。 - Docker Compose原生支持:新增
spring-boot-docker-compose
模块,自动启动和停止compose定义的服务,提取连接详情进行自动配置。 - SSL配置统一升级:支持PEM格式证书,统一Web服务器和数据服务的SSL配置,引入SSL Bundle概念简化证书管理。
- Spring Authorization Server:新增Spring Authorization Server的自动配置和starter,简化OAuth2授权服务器搭建。
- GraphQL增强:改进异常处理机制,新增分页和排序支持,增强模式类型生成。
# 3.2
官网链接:
主要特性:
- 虚拟线程全面支持:通过
spring.threads.virtual.enabled=true
配置,在Servlet Web服务器、任务执行和调度中启用虚拟线程,显著提升高并发场景吞吐量(需要Java 21+
)。 - RestClient GA版本:引入同步的、类似
WebClient
API的HTTP客户端,作为RestTemplate
的现代替代品。 - JdbcClient自动配置:新增轻量级的JDBC客户端,简化数据库操作代码。
- SSL Bundle热重载:支持监控和重新加载SSL信任材料,实现证书的无缝更新,无需重启应用。
- Spring for Apache Pulsar:新增Apache Pulsar消息队列的完整集成支持。
- JVM Checkpoint Restore(CRaC):为Project CRaC提供实验性支持,实现应用状态检查点和快速恢复。
- 观测性增强:自动记录关联ID到日志,支持
Micrometer
注解(@Timed
、@Counted
、@Observed
)。
# 3.3
官网链接:
主要特性:
- CDS(类数据共享)优化:支持创建CDS友好的布局,通过
java -Djarmode=tools
提取uber JAR,显著减少应用启动时间和内存消耗。 - 观测性全面升级:增强
Micrometer
的@SpanTag
注解支持,新增进程InfoContributor
,升级到Prometheus 1.x
客户端,为消息监听器和RabbitTemplate
启用观测。 - 安全配置简化:引入
JwtAuthenticationConverter
的自动配置,大幅简化JWT身份验证的配置复杂度。 - 服务连接生态扩展:新增
Apache ActiveMQ Artemis
、官方ActiveMQ Classic镜像、LDAP
以及Bitnami
容器镜像的服务连接支持。 - 虚拟线程WebSocket支持:为
WebSocket
提供虚拟线程支持,在高并发实时应用场景下显著提升可扩展性。 - Base64资源加载:支持使用
base64:
前缀加载Base64编码的资源,特别适用于SSL证书等敏感配置的管理。 - SBOM软件清单端点:新增软件物料清单(SBOM)Actuator端点,支持软件供应链安全审计和合规性检查。
- SSL SNI多域名支持:增强嵌入式Web服务器的SSL SNI支持,允许单一IP地址配置多个SSL证书,支持多域名HTTPS服务。
# 3.4
官网链接: Spring Boot 3.4.0 Available Now (opens new window)
主要特性:
- 结构化日志重大升级:支持
Elastic Common Schema (ECS)
、Graylog Extended Log Format (GELF)
和Logstash
格式的结构化日志输出,机器可读性显著提升。 - 应用分组管理:新增
spring.application.group
属性,支持应用程序分组管理,便于微服务环境下的统一监控。 - 虚拟线程扩展支持:虚拟线程支持扩展到
OtlpMeterRegistry
、Undertow Web服务器
等更多组件,全面提升并发性能。 - 镜像构建优化:默认使用Paketo的tiny Java构建器,新增
trustBuilder
和imagePlatform
选项,支持多平台OCI镜像构建。 - HTTP客户端统一建造器:引入
ClientHttpRequestFactoryBuilder
,为RestClient
和RestTemplate
提供统一的HTTP客户端定制能力。 - Bean验证增强:
@Validated @ConfigurationProperties
严格遵循Bean Validation规范,只有标注@Valid
的字段才级联验证。 - 容器化测试改进:Docker Compose支持多配置文件,Testcontainers新增
Redis Stack
、Hazelcast
、OTLP
日志等容器支持。 - 默认优雅停机:Web服务器默认启用优雅停机,确保请求完整处理后再关闭应用。
- AssertJ MockMvc集成:当AssertJ在类路径上时,自动提供
MockMvcTester
配置,简化Web层测试。
# 总结
Spring Boot的演进始终围绕简化开发和技术趋势适配展开:
- 编程范式:从XML到注解,再到响应式和函数式编程,持续降低开发门槛。
- 生态整合:从Java EE到云原生,构建庞大技术生态(Spring Data、Spring Cloud等)。
- 性能优化:非阻塞I/O、背压机制和容器化支持,应对高并发场景。
如需详细文档,请访问Spring Boot官方文档 (opens new window)或GitHub版本日志 (opens new window)。
祝你变得更强!
编辑 (opens new window)
上次更新: 2025/08/16