Spring Framework 6.0.0 现已正式发布。

“这是 2023 年及以后新一代框架的开始,拥抱了 OpenJDK 和 Java 生态系统中当前和即将到来的创新。同时,我们将其精心设计为针对现代运行时环境的 Spring Framework 5.3.x 的直接升级。”
作为核心框架的重大修订,Spring Framework 6.0 带来了 Java 17+ baseline 和向 Jakarta EE 9+(在 jakarta 命名空间中)的迁移,重点关注最近发布的 Jakarta EE 10 API,例如 Servlet 6.0 和 JPA 3.1。这提供了对最新的 Web 容器(例如 Tomcat 10.1)和最新的 persistence providers(例如 Hibernate ORM 6.1)的访问。公告称,不要停留在 Java EE 8 上,建议跃升到 jakarta 命名空间,最好直接跳到 Jakarta EE 10 level。即将发布的 Spring Boot 3.0.0 版本将包含相应的托管依赖项。
在基础架构方面,6.0 引入了 Ahead-Of-Time 转换的基础以及对 Spring 应用程序上下文的相应 AOT 处理支持。这为 Spring Boot 3 的 GraalVM native images 提供了一流的支持。你还可以使用 Spring 应用程序探索 Project Loom 的虚拟线程,可参阅 “Embracing Virtual Threads”;并深入研究 Project CRaC 的 checkpoint 恢复方法以加快 JVM 启动速度。官方表示,这两项功能目前都处于预览状态,但有望成为基于 Spring Framework 6.x 的应用程序的 first-class 特性。
Spring Framework 6.0 中还有许多进一步的功能和改进可用,例如 HTTP 接口客户端、对 RFC 7807 问题细节的支持以及 HTTP 客户端的基于 Micrometer 的可观察性。
可查看新功能页面以获得全面的概述。
下载:
Spring Framework 是一个开源的 Java/Java EE 全功能栈(full-stack)的应用程序框架,以 Apache 许可证形式发布,也有 .NET 平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由 Rod Johnson 和 Juergen Hoeller 等开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。

Spring 中包含的关键特性:
强大的基于 JavaBeans 的采用控制翻转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易。
一个可用于从 applet 到 Java EE 等不同运行环境的核心 Bean 工厂。
数据库事务的一般化抽象层,允许宣告式 (Declarative) 事务管理器,简化事务的划分使之与底层无关。
内建的针对 JTA 和 单个 JDBC 数据源的一般化策略,使 Spring 的事务支持不要求 Java EE 环境,这与一般的 JTA 或者 EJB CMT 相反。
JDBC 抽象层提供了有针对性的异常等级 (不再从 SQL 异常中提取原始代码), 简化了错误处理,大大减少了程序员的编码量。再次利用 JDBC 时,你无需再写出另一个 ' 终止 ' (finally) 模块。并且面向 JDBC 的异常与 Spring 通用数据访问对象 (Data Access Object) 异常等级相一致.
以资源容器,DAO 实现和事务策略等形式与 Hibernate,JDO 和 iBATIS SQL Maps 集成。利用众多的翻转控制方便特性来全面支持,解决了许多典型的 Hibernate 集成问题。所有这些全部遵从 Spring 通用事务处理和通用数据访问对象异常等级规范.
灵活的基于核心 Spring 功能的 MVC 网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现 (View) 技术,例如 JSP,FreeMarker,Velocity,Tiles,iText 以及 POI。值得注意的是,Spring 中间层可以轻易地结合于任何基于 MVC 框架的网页层,例如 Struts,WebWork,或 Tapestry。
提供诸如事务管理等服务的面向方面编程框架。
在设计应用程序 Model 时,MVC 模式(例如 Struts)通常难于给出一个简洁明了的框架结构。Spring 却具有能够让这部分工作变得简单的能力。程序开发员们可以使用 Spring 的 JDBC 抽象层重新设计那些复杂的框架结构。
在线 Javadoc:Spring Framework