支持JDK 21的Spring Framework 6.1 M1 发布


现在可以从repo.spring.io/milestone获得第一个 Spring Framework 6.1 里程碑版本。

此版本引入了 6.1 代的主要主题,以及 6.1.0-M1 中所有主题的初始功能:

  • 拥抱 JDK 21 LTS
  • 虚拟线程(Project Loom)
  • JVM 检查点恢复(项目 CRaC)
  • 数据绑定和验证

请注意,Spring Framework 6.1 在运行时提供了 JDK 21 和 Jakarta EE 10 的一流体验,同时保留了 JDK 17 和 Jakarta EE 9 基线。我们还采用了最新版本的 GraalVM for JDK 17 及其即将推出的 JDK 21 版本,同时保持与 GraalVM 22.3 的兼容性。

请留意 7 月发布的第一个 Spring Boot 3.2 里程碑,它基于 Spring Framework 6.1。

核心新功能

  • JDK 21上的虚拟线程配置选项:一个专门的VirtualThreadTaskExecutor和SimpleAsyncTaskExecutor上的一个flag
  • 与Project CRaC的生命周期集成,用于JVM检查点恢复。
  • 支持在注入点解析JDK 21 SequencedCollection/Set/Map;
  • 修改了即时和持续时间解析(与Spring Boot一致);
  • 支持SpEL表达式中属性、字段和变量名称中A-Z以外的字母;
  • 支持将MethodHandle注册为SpEL函数。
  • 异步/反应式销毁方法(例如,在R2DBC ConnectionFactory上);
  • 反应式@Scheduled方法(包括Kotlin coroutines);
  • 用于程序化验证器实现的验证器工厂方法;
  • MethodValidationInterceptor抛出的MethodValidationException是ConstraintViolationException的子类,其违规行为与MessageSource可解析代码相适应,并与@Valid参数的Errors实例相适应,具有级联违规。

数据访问和交易

  • 失败的CompletableFuture将触发了异步事务方法的回滚;
  • BeanPropertyRowMapper和DataClassRowMapper也可用于R2DBC;