聊聊Spring Boot 2.0與Java 9
Java 9發布至今已經有半年之久,Spring Boot對其的支持進度也快接近完成,本文就來整理一下在Java 9上運行Spring Boot的一些要點。
必須使用Spring Boot2.0
在Spring Boot的版本計劃中明確說明了2.0版本開始才對Java 9進行支持,而1.x版本暫時沒有對Java 9的支持計劃,所以如果我們要使用Java 9,就必須將Spring Boot版本升級至2.0。
細節注意點
AspectJ
在Java9中要使用JDK的編譯織入切面時,我們需要引入AspectJ 1.9,但是這個版本還處于RC狀態,并不是正式版本,所以當Spring Boot 2會在Aspect 1.9 GA的時候更新這個版本依賴。
JAXB
如果使用Hibernate的情況下,由于依賴JAXB,這個時候可能會碰到這個錯誤:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException,面對這個問題,只需要引入如下依賴就可以解決:
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.3.0</version>
- </dependency>
測試插件
***的maven-surefire-plugin 插件(2.20.1版本)需要手工指定一個模塊以防止包含java.se.ee:
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <argLine>--add-modules java.base</argLine>
- </configuration>
- </plugin>
或者也可以指定降級到2.20.0版本
一些暫不支持的類庫
Apache Cassandra,具體可見:#10453
JSP TLDs在嵌入式Tomcat中不生效,具體可見:#10456
參考資料
【本文為51CTO專欄作者“翟永超”的原創稿件,轉載請通過51CTO聯系作者獲取授權】