聊聊Spring Boot 2.0與Java 9
Java 9發(fā)布至今已經(jīng)有半年之久,Spring Boot對其的支持進(jìn)度也快接近完成,本文就來整理一下在Java 9上運(yùn)行Spring Boot的一些要點(diǎn)。
必須使用Spring Boot2.0
在Spring Boot的版本計(jì)劃中明確說明了2.0版本開始才對Java 9進(jìn)行支持,而1.x版本暫時(shí)沒有對Java 9的支持計(jì)劃,所以如果我們要使用Java 9,就必須將Spring Boot版本升級至2.0。
細(xì)節(jié)注意點(diǎn)
AspectJ
在Java9中要使用JDK的編譯織入切面時(shí),我們需要引入AspectJ 1.9,但是這個(gè)版本還處于RC狀態(tài),并不是正式版本,所以當(dāng)Spring Boot 2會(huì)在Aspect 1.9 GA的時(shí)候更新這個(gè)版本依賴。
JAXB
如果使用Hibernate的情況下,由于依賴JAXB,這個(gè)時(shí)候可能會(huì)碰到這個(gè)錯(cuò)誤:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException,面對這個(gè)問題,只需要引入如下依賴就可以解決:
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.3.0</version>
- </dependency>
測試插件
***的maven-surefire-plugin 插件(2.20.1版本)需要手工指定一個(gè)模塊以防止包含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專欄作者“翟永超”的原創(chuàng)稿件,轉(zhuǎn)載請通過51CTO聯(lián)系作者獲取授權(quán)】