GraalVM 版本:graalvm-ce-java17-22。3。0
SpringBoot3。0 中最重要的特性就是對 GraalVM 的支援,從而達到更快的啟動速度,有兩種使用方式。
利用 GraalVM 構建可執行檔案
因為需要利用 GraalVM 來打包可執行檔案,所以需要你的機器上安裝了 GraalVM。
新建一個 SpringBoot 3。0 的 Maven 工程,引入 parent、starter 依賴、以及兩個重要的外掛:
然後執行:
mvn -Pnative clean native:compile複製程式碼
需要花費一些時間。。。
執行完能看到 BUILD SUCCESS:
然後進入 target,就能看到一個 exe 檔案:
我們可以直接執行該 exe 來啟動我們的 SpringBoot 應用:
這樣,我們就可以把這個可執行檔案傳送給另外的 windows 機器了,並且對方機器都不需要安裝 JDK 就能執行我們的 SpringBoot 程式(親自測過,確實能直接執行)。
不過大家應該發現了問題,在 windows 上編譯出來的是 exe 檔案,它是不能在 linux 上執行的,那麼怎麼辦呢?
利用 Buildpacks 構建可執行檔案 Docker 映象
我們可以直接把 SpringBoot 應用對應的本地可執行檔案構建為一個 Docker 映象,這樣就能跨作業系統運行了。
Buildpacks,類似 Dockerfile 的映象構建技術
注意要安裝 docker,並啟動 docker
注意這種方式並不要求你機器上安裝了 GraalVM,會由 SpringBoot 外掛利用/paketo-buildpacks/native-image 來生成本地可執行檔案,然後打入到容器中
Docker 映象名字中不能有大寫字母,我們可以配置映象的名字:
然後執行:
mvn -Pnative spring-boot:build-image複製程式碼
來生成 Docker 映象。
執行完之後,就能看到 docker 映象了:
然後就可以執行容器了:
docker run ——rm -p 8080:8080 springboot3demo
參考
https://docs。spring。io/spring-boot/docs/current/reference/html/native-image。html#native-image。developing-your-first-application。native-build-tools
https://www。graalvm。org/22。2/reference-manual/native-image/guides/build-spring-boot-app-into-native-executable/