Spring Framework 6.0 发布了首个 RC 版本。
翻译后页面(有点好笑):
On behalf of the team and everyone who has contributed, I am pleased to announce that Spring Framework is available now.
6.0.0-RC2
Spring Framework includes6.0.0-RC2
28 fixes and improvements. Stay tuned for the announcement of Spring Boot later today!3.0.0-RC1
主要关注点如下:
Spring6.0.0-RC2
版本与SpringBoot3.0.0-RC1
版本发布。
@RegisterReflectionForBinding
是否至少指定一个类BindingReflectionHintsRegistrar
添加 Kotlin 数据类组件支持FieldValueTransformer
API 的 PreComputeFieldFeature
Spring Framework 6.0
作为重大更新,他直接舍弃一以往版本的JDK
,要求使用JDK17
或者以上版本。
Spring6.0
已迁移到 Jakarta EE 9+
(在 jakarta
命名空间中取代了以前基于 javax
的 EE API
),以及对其他基础设施的修改。基于这些变化,Spring Framework 6.0
支持最新 Web
容器,如 Tomcat 10
/ Jetty 11
,以及最新的持久性框架 Hibernate ORM
。
这些特性仅可用于 Servlet API
和 JPA
的jakarta
命名空间变体。
Jakarta EE
也并非新的技术,前身是Java的J2EE。
除此之外,还有一些新的改进和特性:
@HttpExchange
服务接口的 HTTP 接口客户端Spring Framework 6.0
第一个里程碑版本已经发布,目前已经可以从
Spring Repo`获取。
上面说到,Jakarta EE
不是什么新技术,那么由来在这说一下。
甲骨文已经把Java EE
捐献给Eclipse
基金会数年了。Java EE
的名称也变更为了Jarkarta EE
,包名也相应地从javax
变更为jakarta
。例如javax.persistence
现在对应为jakarta.persistence
。
Jakarta EE
的持久层规范也将在此次里程碑版本中完成迁移。这意味着javax.persistence
和jakarta.validation
都将实装。对应 Hibernate ORM 5.6.x
和 Hibernate Validator 7.0.x
。
在本次里程碑版本中涉及到的两个核心容器规范JSR-250
和JSR-330
的包名都会迁移到Jakarta EE
。
由于Jakarta EE的合并迁移,Servlet中间件也要进行升级。Tomcat 10, Jetty 11, 或者基于undertow-servlet-jakarta
的 Undertow 2.2.14 是目前里程碑版本的基准线。
一些过时的基于Servlet的组件已经在本次里程碑版本中移除。
现在Spring MVC和Spring WebFlux将不再将类上单独有@RequestMapping
的Spring Bean视为控制器。在6.0之前默认情况以下代码是可以的。
6.0之前相关基于AOP的代理机制将失效, 请为此类控制器启用基于类的代理 。
在6.0之后默认情况下必须有
@Controller
或@RestController
注解才可以被视为控制器。
请求方法HttpMethod
在6.0之前为Java枚举。
在6.0以后改为Java类。
此外,团队称预估整体的项目在11月正式 GA。 在2022年的1月份Spring Framework 6.0的第二个里程碑和对应的Spring Boot 3.0第一个里程碑将和大家见面。 注:本文综合参考互联网信息、部分开源中国资料、部分官网资料、部分博客资料。