Spring Boot 3.2 发布概述
2023年11月,Spring Boot团队发布了Spring Boot 3.2版本。此次更新引入了多项重要功能,主要包括对虚拟线程(Virtual Threads)和协调恢复检查点(CRaC)的支持。此外,还新增了SSL捆绑包重载、RestClient和JdbcClient接口支持,以及可观测性改进等功能。
主要新功能
虚拟线程支持
Spring Boot 3.2集成了JDK 21中Project Loom的虚拟线程功能。虚拟线程是一种轻量级线程,显著简化了高吞吐量并发应用的开发、维护和观测。要启用虚拟线程,需设置属性spring.threads.virtual.enabled为true,并使用JDK 21。启用后,Tomcat和Jetty将使用虚拟线程处理Web请求,SimpleAsyncTaskExecutor类也会配置为使用虚拟线程,影响@EnableAsync注解的方法、异步Spring MVC请求以及Spring WebFlux阻塞调用等。
RestClient和JdbcClient支持
Spring Boot 3.2引入了Spring Framework 6.1中的RestClient,作为RestTemplate的现代替代方案。RestClient是一个同步HTTP客户端,提供了类似WebClient的功能式API,无需依赖Spring WebFlux。Spring Boot会自动配置RestClient.Builder Bean来创建RestClient实例。此外,还引入了JdbcClient接口,提供了一种流畅的API来执行常见的数据库操作。
SSL捆绑包重载
Spring Boot 3.1中首次引入了SSL捆绑包功能,用于配置和使用SSL信息(如密钥库、证书、私钥等)。在Spring Boot 3.2中,可以通过设置reload-on-update=true属性,在SSL信任材料发生变化时重载SSL捆绑包。Netty和Tomcat服务器支持热重载。此外,还提供了spring.ssl.bundle.watch.file.quiet-period=10s属性,用于配置检测变化的静默期。
可观测性改进
Spring Boot 3.2在可观测性方面进行了多项改进。当spring-boot-starter-aop在类路径中时,可以使用Micrometer的注解(如@Timed、@Counted、@NewSpan、@ContinueSpan和@Observed)进行声明式观测。@Scheduled注解的方法也会被纳入观测范围。此外,management.metrics.tags属性已被弃用,取而代之的是management.observations.key-values,用于为所有观测添加通用的键值对。
开发者的机遇
Spring开发者倡导者Josh Long表示,Spring Boot 3.2结合了Project CRaC(在特定OpenJDK发行版中可用)和Project Loom(Java 21中的功能)的支持,为开发者提供了前所未有的运行时效率。这些功能与对GraalVM原生镜像的支持相结合,为Spring Boot开发者在生产环境中提供了极佳的体验。
官方发布说明
完整的更新和重要变更列表,请参阅官方发布说明。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。