Một số điểm cần lưu ý khi nâng cấp hoặc xây dựng mới ứng dụng Spring Boot của bạn với JDK 12

Theo như thông báo chính thức từ Oracle, Java JDK 8 chính thức ngừng hỗ trợ từ tháng 1 năm 2019.

Tuy Oracle đã cập nhật đến phiên bản JDK 12 với nhiều tính năng nâng cấp mới, các bạn có thể tham khảo tại link này  Với cấu trúc Modularity mới và một số Java API bị loại bỏ và thay thế bởi các hàm mới trong JDK 9 đến JDK 12, việc setup một project Spring cũng bị thay đổi ít nhiều so với việc dùng phiên bản JDK 8 trước đó

Về cơ bản việc dùng Spring Framework với JDK 8 hay với JDK 12 không khác nhau nhiều, các chỉ cần lưu ý một số điểm sau để tránh mất thời gian cho quá trình setup project hay xảy ra lỗi runtime trong quá trình thực thi ứng dụng.

1. Sử dụng Spring Boot phiên bản 2.1.x trở lên.

Phiên bản Spring Boot 2.0.x ngày trước được phát triển để tương thích tốt nhất với JDK 8 và nếu chúng ta cố gắng chạy Spring Boot 2.0.x với các phiên bản JDK mới hơn từ JDK 9 trở lên thì sẽ gặp một số lỗi phát sinh. Các nhà phát triển Spring Boot khuyến cáo chúng ta nên dùng phiên bản Spring Boot có thời gian phát hành gần với phiên bản JDK tại thời điểm của nó nhất, tức là dùng Spring Boot mới (2.1.x) với  JDK mới (JDK 12).

Khai báo thư viện Maven:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
         xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>thecoderoot</groupId>
    <artifactId>springboot-gettingstarted</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Ở đây mình sử dụng phiên bản Spring Boot 2.1.4.RELEASE.

Lưu ý: khi chọn lựa phiên bản phiên bản Spring Boot cho ứng dụng của bạn. Các nhà phát triển Spring Framework nói riêng và Spring Boot nói chung sẽ phát triển đồng thời nhiều phiên bản cao thấp khác nhau, ví dụ như hiện tại Spring Boot 2.2.x đã được đưa ra cộng đồng dùng thử để lấy feedback. Vì vậy khi cần chọn lựa phiên bản để sử dụng cho các ứng dụng production các bạn nên đọc kỹ tài liệu phát hành của Spring để chọn lựa cho mình.

 

2. Luôn khai báo dependency spring-boot-starter-web

Ở phiên bản JDK 8 Spring Boot sử dụng một số hàm được tích hợp sẵn trong JDK 8 tuy nhiên qua các phiên bản JDK 9 hay JDK 12 các hàm này không còn được tích hợp nữa, vì thế chúng ta cần phải add dependency spring-boot-starter-web để có thể build  được ứng dụng.

 

3. Nâng cấp các plugin development:

Maven:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.0</version>
  <configuration>
  <release>11</release>
  </configuration>
  <dependencies>
  <dependency>
    <!-- update compiler plugin dependency on ASM for Java 11 compatibility -->
    <groupId>org.ow2.asm</groupId>
    <artifactId>asm</artifactId>
    <version>6.2</version>
  </dependency>
  </dependencies>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <argLine>
    --illegal-access=permit
    </argLine>
  </configuration>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-failsafe-plugin</artifactId>
    <configuration>
    <argLine>
    --illegal-access=permit
    </argLine>
  </configuration>
</plugin>

Với các bạn sử dụng Eclipse:

  • Sử dụng phiên bản Eclipse Photon hoặc 4.9 trở lên.
  • Cài đặt các plugin hỗ trợ JDK 11 trở lên.
  • Khai báo <java.version> thành 12.
  • Sử dụng plugin Jacoco thay cho Cobertura

Các bạn có thể download source code tại đâyđây

Chúc các bạn thành công.

AutoCode.VN

minhnhatict@gmail.com