java - Spring 版本 4.3.20 是否适用于 Java 11?

标签 java spring java-11 spring-web

<分区>

当涉及到 spring 4.3.20 支持的 java 版本时,我感到很困惑。将 Spring 4.3.20 项目更新到 Java 11 时没有任何问题。我所有的测试都工作正常,webapp 启动了,所有需要像 @Cacheable 这样的字节码魔术的 Spring 功能都可以工作。这怎么可能?据我了解,我应该更新到 Spring 5+。我检查了我的 Maven 设置中的语言级别和生成的 .class 文件的字节码版本,它们确实使用了 major version: 55

我错过了什么?

我使用 Java 11 构建并使用 Java 11 启动本地 tomcat。我仔细检查了所有设置并使用 visualvm 验证 tomcat 确实使用 Java 11 运行。

这是 javap 的输出:

enter image description here

最佳答案

Spring 5.1 支持 Java 11,早期版本不支持。参见 Spring Framework Versions :

JDK Version Range

  • Spring Framework 5.1.x: JDK 8-12
  • Spring Framework 5.0.x: JDK 8-10
  • Spring Framework 4.3.x: JDK 6-8

What's New in Spring Framework 5.x :

What's New in Version 5.1

General Core Revision

  • Infrastructure:
    • Warning-free support for JDK 11 on the classpath and the module path.

4.3.x 在 Java 11 上运行可能只是意味着你到目前为止很幸运(没有使用与 Java 11 不兼容的东西)。此外,Java 在向后兼容性方面非常好,即使自 Java 9 以来删除了一些东西或有意向后不兼容的更改,Spring 中真正损坏的东西也完全有可能非常小和晦涩。

也就是说,如果作者说 Java 兼容性只能在比您使用的更高版本中得到保证,我就不会在 Java 11 中使用像 Spring 这样庞大的库集。如果您想将 Spring 与 Java 11 一起使用,请升级到 Spring 5.1。

关于java - Spring 版本 4.3.20 是否适用于 Java 11?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54743146/

相关文章:

java - Play 框架 2.0.4 Java : impossible to convert ArrayList of POJOs in JsonNode

java - unregisterReceiver 由 : java. lang.IllegalArgumentException 引起

java - BaseHstComponent 的新文档 : Could not obtain workflow 'default'

jndi - 从 JDK 11 客户端到 Weblogic 10.3.6 (JDK 7) 服务器的简单 JNDI 查找不起作用

java - 如何在 M1 Macbook 上编译 OpenJDK 11?

java - 在 Eclipse 中将 Spring Boot 应用程序导出为 JAR 文件

java - 如何保存 boolean 值,以便我在返回此 Activity 时可以使用它们?

spring - 带有Gradle的Eclipselink/Spring引导。获取QueryDslPredicateExecutor的ClassNotFoundException

java - 在 Spring Boot 上使用正确的方言 PostgreSQL

java - 如何更改 java.net.http.HttpClient 的用户代理字符串