3 回答
TA贡献1804条经验 获得超8个赞
Spring 5.1 支持 Java 11,早期版本不支持。请参阅Spring 框架版本:
JDK 版本范围
Spring 框架 5.1.x:JDK 8-12
Spring 框架 5.0.x:JDK 8-10
Spring Framework 4.3.x:JDK 6-8
以及Spring Framework 5.x 中的新增功能:
5.1 版的新功能
一般核心修订
基础设施:
在类路径和模块路径上对 JDK 11 的无警告支持。
4.3.x 适用于 Java 11 可能只是意味着您到目前为止很幸运(没有使用与 Java 11 不兼容的东西)。此外,Java 在向后兼容性方面也相当不错,即使从 Java 9 开始删除或有意的向后不兼容更改,Spring 中真正损坏的东西完全有可能非常小且晦涩难懂。
也就是说,如果作者说 Java 兼容性仅在您使用的更高版本中得到保证,我不会使用 Java 11 那样庞大的 Spring 库集。如果您想在 Java 11 中使用 Spring,请升级到 Spring 5.1。
TA贡献1802条经验 获得超10个赞
似乎兼容性是社区中的一个常见问题,因此在 Spring 文档中有一个答案(有点):https ://spring.io/blog/2015/04/03/how-spring-achieves-compatibility-with-java -6-7-8
基本上,Spring 代码库本身甚至不使用 Java 7 的特性,因此它与 6 兼容。
至于字节码转换,我相信 JVM 保持了一定程度的兼容性,因为它的规范允许框架的一些特性工作。
但是,如果官方文档说它不兼容,那么你应该相信这个意外,因为其他功能可能无法工作或被补丁和次要版本破坏。
PS您还提到cglib
了可以用来操作字节码,但实际上并不是必需的。它生成的 Java 代码甚至字节码在新的 JVM 版本中总是向后兼容。
添加回答
举报