我已阅读以下与 Spring 3.2 和 Java 8 兼容性问题相关的问题,但我仍然有几个未解决的问题。
假设有一个使用 Spring 3.2 的工件(例如 DAL),并且该工件必须在 java 7 服务(服务 A)和 java 8 服务(服务 B)之间共享。这些服务将针对各自的 Java/JVM 进行编译和运行。
现在的问题是 - 是否可以在 Service-A 和 Service-B 中使用 DAL?
根据片段 1,它应该可以工作,因为 Java 8 运行时支持针对 Java 7 编译的 Spring 3.2 库,但根据片段 2,这不应该工作,因为 Service-B 已经针对 java 8 进行了编译,并且它将使用 DAL已针对 java 7 进行编译。
片段1:
然而,一些 Spring 发行说明表示,Spring Framework 3.2.x 将支持针对 JDK 7(使用 -target 1.7)或更早版本编译的应用程序在 JDK 8 运行时上的部署。请注意,它不支持 JDK 8 的字节码格式(-target 1.8,根据 lambda 的需要);为此,请升级到 Spring Framework 4.0。
片段2:
早于 4.0M1 的 Spring 框架版本不适用于为 Java 8 编译的类。
使用 Spring 3.x 迁移到 Java 8 是没有意义的,最好迁移到 JDK 1.8 和 Spring 4.x。 JDK 8 迁移不应该成为问题,除非必须针对 JDK 8 功能更改代码。
Spring 3.2.9 将是 Java 8 字节码支持的最佳选择。