Spring Boot 2.0與Java 9

本文首發:http://blog.didispace.com/Spring-Boot-2.0%E4%B8%8EJava-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版本

一些暫不支持的類庫

  1. Apache Cassandra,具體可見:#10453
  2. JSP TLDs在嵌入式Tomcat中不生效,具體可見:#10456

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章