在 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列出了对JDK17和JDK18的预期支持。
发现这个 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.
org.springframework.bootspring-boot-starter-parent2.5.7
请注意新版本中缺少-RELEASE的后缀。Spring更新了Spring Boot 在 version 中采用的版本控制方案 2.4.0。
tips: Spring Boot 2.5 已经定义了对 Lombok 的依赖项1.18.22。
如果看完的小伙伴有兴趣了解更多的话,欢迎添加vx小助手:ON7luck 详细了解~
网友评论