Spring Boot 2.0与Java 9

【推荐阅读】撸了今年阿里、腾讯和美团的面试,我有一个重要发现...
文章目录
  1. 1. 必须使用Spring Boot2.0
  2. 2. 细节注意点
  • 参考资料
  • 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

    参考资料