3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超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 版的新功能
一般核心修訂
基礎(chǔ)設(shè)施:
在類路徑和模塊路徑上對 JDK 11 的無警告支持。
4.3.x 適用于 Java 11 可能只是意味著您到目前為止很幸運(yùn)(沒有使用與 Java 11 不兼容的東西)。此外,Java 在向后兼容性方面也相當(dāng)不錯,即使從 Java 9 開始刪除或有意的向后不兼容更改,Spring 中真正損壞的東西完全有可能非常小且晦澀難懂。
也就是說,如果作者說 Java 兼容性僅在您使用的更高版本中得到保證,我不會使用 Java 11 那樣龐大的 Spring 庫集。如果您想在 Java 11 中使用 Spring,請升級到 Spring 5.1。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個贊
似乎兼容性是社區(qū)中的一個常見問題,因此在 Spring 文檔中有一個答案(有點(diǎn)):https ://spring.io/blog/2015/04/03/how-spring-achieves-compatibility-with-java -6-7-8
基本上,Spring 代碼庫本身甚至不使用 Java 7 的特性,因此它與 6 兼容。
至于字節(jié)碼轉(zhuǎn)換,我相信 JVM 保持了一定程度的兼容性,因?yàn)樗囊?guī)范允許框架的一些特性工作。
但是,如果官方文檔說它不兼容,那么你應(yīng)該相信這個意外,因?yàn)槠渌δ芸赡軣o法工作或被補(bǔ)丁和次要版本破壞。
PS您還提到cglib
了可以用來操作字節(jié)碼,但實(shí)際上并不是必需的。它生成的 Java 代碼甚至字節(jié)碼在新的 JVM 版本中總是向后兼容。
添加回答
舉報