Spring Boot 2.5.x能支持Java 17了 - codecentric


在 Spring Framework 中,AOP 代理是 JDK 动态代理或 CGLIB 代理。
ASM是 Java 字节码操作的框架。ASM 被 CGLIB 使用,而 CGLIB 又被Spring 用于 AOP
Spring 通过使用 CGLIB 和 ASM,正在生成与 Java 17 的运行时不兼容的代理类。Spring Boot 2.3 依赖于 Spring Framework 5.2,后者使用与 Java 17 不兼容的 CGLIB 和 ASM 版本。
但是 Spring 6和Spring Boot 3版本才开始正式支持 Java 17。
虽如此,他们已经做了很多工作来支持 Spring Framework5.3.x和 Spring Boot 中的Java 17,并在 Spring Framework 5.3.x 中2.5.x列出了对 JDK 17 和 JDK 18 的预期支持
发现这个 GitHub 问题Document support for Java 17 #26767,标记为版本 2.5.5已经支持Java 17了。
截至今天,最新的 Spring Boot 2.5.x 版本是2.5.7. 我们有一个支持 Java 17 的 Spring Boot 版本,让我们开始吧。
在您的父 POM 中,将父级更新为spring-boot-starter-parent:2.5.7.

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.5.7</version>
</parent>

请注意新版本中缺少-RELEASE的后缀。Spring更新了Spring Boot 在 version 中采用的版本控制方案2.4.0。
tips: Spring Boot 2.5 已经定义了对 Lombok 的依赖项1.18.22。
详细点击标题见原文