亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

用Spring Native將SpringBoot程序轉換為GraalVM

瀏覽:3日期:2023-07-16 15:18:39

Spring發布了一個新工具Spring Native Beta,用于將現有的Spring Boot應用程序(用Java或Kotlin編寫)轉換為GraalVM本機映像。目標是在springnative上支持Spring Boot應用程序。GraalVM本機映像很小,經過優化,啟動速度很快。然而,與JVM相比,折衷的辦法是構建時間更長,運行時優化更少。

Spring Native與GraalVM團隊合作,充當橋梁,確保GraalVM理解傳統的SpringBoot代碼。Oracle實驗室的高級研究經理Vojin Jovanovic在談到他們與Spring的合作時說:

與Spring團隊合作構建本機JVM生態系統是一件非常愉快的事情:他們深厚的技術知識和對社區敏感的觸覺總能帶來最好的解決方案。最新的Spring本機版本及其在JVM生態系統中的大量使用為本機編譯的廣泛采用鋪平了道路。

在后臺,Maven和Gradle提供的提前(AOT)插件用于將Spring引導應用程序轉換為本機代碼。這些插件為GraalVM不支持的所有Spring元素(如反射和代理)生成GraalVM本機配置。生成的配置存儲在reflect-config.json 文件。例如,用@Service注釋的每個類都在JSON文件中配置。

假設Spring本機配置文件位于META-INF/Native-image文件夾中,則可以發現它們。本機提示可用于配置SpringNative尚不支持的元素,例如MySQL驅動程序配置。

創建新項目時,Spring Initializer中提供了Spring本機依賴項。

用Spring Native將SpringBoot程序轉換為GraalVM

一些依賴項,比如springdatajpa,需要額外的配置來支持GraalVM。Spring團隊通過插件提供這些額外的配置。例如,在Intitializr中添加了Spring數據JPA依賴項之后,兩個額外的Maven插件Spring aot Maven plugin和hibernate enhance Maven plugin(包括它們的配置)被添加到pom.xml文件。

此時并非所有依賴項都受Spring Native支持。如果initializer生成的Spring項目中包含不支持的依賴項,則HELP.md 文件將列出它。

用Spring Native將SpringBoot程序轉換為GraalVM

與任何其他Spring Boot應用程序一樣,Initializer會自動創建適當的入口點類來運行應用程序:

@SpringBootApplicationpublic class NativeApplication {public static void main(String[] args) {SpringApplication.run(NativeApplication.class, args);}}

接下來,提供一個REST controller來測試應用程序:

@Controllerpublic class NativeEndpoint { @GetMapping('/native') public String nativeCall() {return 'Native'; }}

除了標準的SpringBoot依賴項之外,Initializer還為SpringNative支持添加了一個新的依賴項:

<dependency><groupId>org.springframework.experimental</groupId><artifactId>spring-native</artifactId><version>${spring-native.version}</version></dependency>

spring boot maven插件接收了一些額外的配置來生成本機映像:

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><image><builder>paketobuildpacks/builder:tiny</builder><env><BP_NATIVE_IMAGE>true</BP_NATIVE_IMAGE></env></image></configuration></plugin>

Maven可用于通過提前編譯生成本機映像。生成的可執行文件包括所有必要的類和來自JDK的靜態鏈接本機代碼。底層VM被用作運行時系統,而不是普通的javavm。

$ ./mvnw spring-boot:build-image

在編譯和優化代碼時,構建映像需要一些時間。此步驟在Docker映像中執行,需要相當多的內存。如果發生以下錯誤,應增加Docker的內存設置:

Exception in thread 'native-image pid watcher' java.lang.OutOfMemoryError: GC overhead limit exceeded

執行上述Maven命令的輸出顯示了結果Docker映像,其中包含GraalVM本機映像:

Successfully built image ’docker.io/library/native:0.0.1-SNAPSHOT’

生成的映像約為82 MB,包含運行應用程序的所有內容:

$ docker imagesnative 0.0.1-SNAPSHOT ... 81.9MB

Docker容器在端口8080上啟動:

$ docker run -p 8080:8080 native:0.0.1-SNAPSHOT

啟動容器后,應用程序幾乎可以立即進行測試:

$ curl localhost:8080/native --silentNative

以上就是用Spring Native將SpringBoot程序轉換為GraalVM的詳細內容,更多關于SpringBoot程序轉換為GraalVM的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
主站蜘蛛池模板: 亚洲精品香蕉一区二区在线观看 | 最新孕交videosgratis | 91亚洲精品久久 | 爽爽爽爽爽爽a成人免费视频 | 欧美日韩国产在线成人网 | 久久久久久久国产精品 | 图片区亚洲色图 | 黑人香蕉又粗又大视频免费 | 国内精品在线视频 | 又刺激又黄的一级毛片 | 亚洲日韩中文字幕在线播放 | 国产在线精品一区二区中文 | 91久久网 | 免费高清成人啪啪网站 | 久久亚洲一级α片 | 一级毛片大全 | 国产女人在线 | 中文字幕第页 | 老司机51精品视频在线观看 | 亚拍一区 | 午夜一级毛片不卡 | 国产综合视频在线 | 黑人解禁hd在线观看 | 亚洲欧美日韩精品久久亚洲区 | 欧美一级做a爰片免费 | 国产不卡精品一区二区三区 | 看片地址 | 精品91自产拍在线观看99re | 日韩欧美国产一区二区三区 | 久久青青草原国产精品免费 | 亚洲 欧美 国产 日韩 制服 bt | 亚洲精品免费在线 | 三级黄色毛片视频 | 日本亚洲国产精品久久 | 国产精品成人观看视频国产奇米 | 久久成人精品视频 | 国产一精品一aⅴ一免费 | 国产主播福利一区二区 | 青青成人福利国产在线视频 | 国产免费久久精品久久久 | 亚洲精品无码不卡 |