Broadcom 发布 Spring Framework 6.2 和 Spring Boot 3.4
2024 年 11 月,Broadcom 发布了 Spring Framework 6.2 和 Spring Boot 3.4,这两个版本继续基于 Java 17 和 Jakarta EE 9。Spring Boot 3.4 引入了结构化日志,增加了对 Docker Compose 和 Testcontainers 的各种容器镜像支持,并改进了容器镜像构建和执行器功能。同时,Broadcom 还宣布了将于 2025 年 11 月发布的 Spring Framework 7 和 Spring Boot 4,它们将继续使用 Java 17,但会升级到 Jakarta 11,并采用 JSpecify 进行空安全性检查,同时通过 Project Leyden 加速应用程序启动。
Spring Boot 3.4 的主要特性
- 结构化日志:Spring Boot 支持 Elastic Common Schema (ecs)、Logstash (logstash) 和 Graylog Extended Log Format (gelf) 格式。通过
logging.structured.format.file和logging.structured.format.console可以分别配置文件和控制台的结构化日志格式。 - Docker Compose 和 Testcontainers 支持:新增了 Redis Stack、Redis Stack Server、Grafana LGTM 和 Kafka 的容器镜像支持。Docker Compose 可以通过
spring.docker.compose.start.arguments和spring.docker.compose.stop.arguments接收命令行参数。 - 容器镜像构建改进:通过
trustBuilder提高了从不受信任的构建器构建 OCI 镜像的安全性,imagePlatform选项可以构建与主机平台不同的操作系统和架构的镜像。 - 执行器改进:新增了只读访问模式,
/actuator/info端点显示 SSL 信息,/scheduledtasks端点显示更多关于调度任务的信息。 - 嵌入式服务器:默认情况下,嵌入式服务器会优雅关闭,Undertow 服务器支持虚拟线程。
- HTTP 客户端:
RestClient和RestTemplate支持多种 HTTP 客户端,包括 Apache HTTP Components、Jetty Client、Reactor Netty 等。 - 依赖管理:Spring Boot 不再依赖 OkHttp 库,
@MockBean和@SpyBean注解被弃用,推荐使用 Spring Framework 的@MockitoBean和@MockitoSpyBean。 - 依赖升级:Spring Boot 3.4 升级了多个依赖,包括 Spring Security 6.4、Log4j 2.24、Hibernate 6.6、Kafka 3.8 等。
Spring Framework 7 和 Spring Boot 4 的展望
- Java 17 基线:Spring Framework 7 和 Spring Boot 4 将继续使用 Java 17 作为基线,同时支持 Java 21 和 Java 25。
- JSpecify 空安全性:Spring Framework 7 将采用 JSpecify 注解来替代现有的空安全性注解,提供更好的工具支持和 Kotlin 集成。
- Project Leyden 和 GraalVM:Spring 团队将与 Project Leyden 和 GraalVM 进行战略合作,提供更快的应用程序启动速度和 AOT 优化。
- Kotlin 2 和 Jakarta EE 11:Kotlin 基线将升级到 Kotlin 2,Jakarta EE 基线升级到 11,带来 Tomcat 11、Hibernate ORM 7 和 Hibernate Validator 9。
开发者访谈
- Spring Framework 6 的生命周期:Juergen Hoeller 表示,Spring Framework 的发布周期不再由特性驱动,而是由时间驱动,以适应更频繁的 JDK 发布和第三方依赖的更新。
- Java 17 基线的选择:Hoeller 解释,Spring Framework 7 继续使用 Java 17 作为基线是因为技术上的收益有限,而 Jakarta EE 11 和 Kotlin 2 的升级更为重要。
- 空安全性改进:Sébastien Deleuze 表示,Spring Framework 7 将迁移到 JSpecify 注解,提供更好的空安全性支持和工具集成。
- Project Leyden 和 GraalVM 的战略意义:Deleuze 强调,Project Leyden 和 GraalVM 提供了互补的技术路径,能够显著提升 Spring Boot 应用的启动速度和运行效率。
总结
Spring Framework 6.2 和 Spring Boot 3.4 带来了一系列改进,特别是在结构化日志、容器支持和执行器功能方面。而 Spring Framework 7 和 Spring Boot 4 则将继续推动 Java 生态的现代化,特别是在空安全性、启动速度和跨平台支持方面。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。