最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM

 更新時間:2021年04月27日 09:38:05   作者:老K的JAVA博客  
這篇文章主要介紹了用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM的方法,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下

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

Spring Native與GraalVM團(tuán)隊合作,充當(dāng)橋梁,確保GraalVM理解傳統(tǒng)的SpringBoot代碼。Oracle實驗室的高級研究經(jīng)理Vojin Jovanovic在談到他們與Spring的合作時說:

與Spring團(tuán)隊合作構(gòu)建本機(jī)JVM生態(tài)系統(tǒng)是一件非常愉快的事情:他們深厚的技術(shù)知識和對社區(qū)敏感的觸覺總能帶來最好的解決方案。最新的Spring本機(jī)版本及其在JVM生態(tài)系統(tǒng)中的大量使用為本機(jī)編譯的廣泛采用鋪平了道路。

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

假設(shè)Spring本機(jī)配置文件位于META-INF/Native-image文件夾中,則可以發(fā)現(xiàn)它們。本機(jī)提示可用于配置SpringNative尚不支持的元素,例如MySQL驅(qū)動程序配置。

創(chuàng)建新項目時,Spring Initializer中提供了Spring本機(jī)依賴項。

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

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

與任何其他Spring Boot應(yīng)用程序一樣,Initializer會自動創(chuàng)建適當(dāng)?shù)娜肟邳c類來運行應(yīng)用程序:

@SpringBootApplication
public class NativeApplication {

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

接下來,提供一個REST controller來測試應(yīng)用程序:

@Controller
public class NativeEndpoint {

    @GetMapping("/native")
    public String nativeCall() {
        return "Native";
    }
}

除了標(biāo)準(zhǔn)的SpringBoot依賴項之外,Initializer還為SpringNative支持添加了一個新的依賴項:

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

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

<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可用于通過提前編譯生成本機(jī)映像。生成的可執(zhí)行文件包括所有必要的類和來自JDK的靜態(tài)鏈接本機(jī)代碼。底層VM被用作運行時系統(tǒng),而不是普通的javavm。

$ ./mvnw spring-boot:build-image

在編譯和優(yōu)化代碼時,構(gòu)建映像需要一些時間。此步驟在Docker映像中執(zhí)行,需要相當(dāng)多的內(nèi)存。如果發(fā)生以下錯誤,應(yīng)增加Docker的內(nèi)存設(shè)置:

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

執(zhí)行上述Maven命令的輸出顯示了結(jié)果Docker映像,其中包含GraalVM本機(jī)映像:

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

生成的映像約為82 MB,包含運行應(yīng)用程序的所有內(nèi)容:

$ docker images
native  0.0.1-SNAPSHOT ... 81.9MB

Docker容器在端口8080上啟動:

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

啟動容器后,應(yīng)用程序幾乎可以立即進(jìn)行測試:

$ curl localhost:8080/native --silent
Native

以上就是用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot程序轉(zhuǎn)換為GraalVM的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談springboot 屬性定義

    淺談springboot 屬性定義

    本篇文章主要介紹了淺談springboot 屬性定義,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • java解一個比較特殊的數(shù)組合并題

    java解一個比較特殊的數(shù)組合并題

    這篇文章主要介紹了java解一個比較特殊的數(shù)組合并題,需要的朋友可以參考下
    2014-06-06
  • Java導(dǎo)出CSV文件的方法

    Java導(dǎo)出CSV文件的方法

    這篇文章主要為大家詳細(xì)介紹了Java導(dǎo)出CSV文件的方法,分頁查詢大數(shù)據(jù)量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Lombok中@Builder和@SuperBuilder注解的用法案例

    Lombok中@Builder和@SuperBuilder注解的用法案例

    @Builder?是?lombok?中的注解,可以使用builder()構(gòu)造的Person.PersonBuilder對象進(jìn)行鏈?zhǔn)秸{(diào)用,給所有屬性依次賦值,這篇文章主要介紹了Lombok中@Builder和@SuperBuilder注解的用法,需要的朋友可以參考下
    2023-01-01
  • java實現(xiàn)簡單石頭剪刀布小游戲

    java實現(xiàn)簡單石頭剪刀布小游戲

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單石頭剪刀布小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Maven pom.xml文件中build,plugin標(biāo)簽的使用小結(jié)

    Maven pom.xml文件中build,plugin標(biāo)簽的使用小結(jié)

    本文主要介紹了Maven pom.xml文件中build,plugin標(biāo)簽的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Spring和SpringBoot比較及區(qū)別解惑

    Spring和SpringBoot比較及區(qū)別解惑

    這篇文章主要介紹了Spring和SpringBoot比較解惑區(qū)別,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Java代碼實現(xiàn)Map和Object互轉(zhuǎn)及Map和Json互轉(zhuǎn)

    Java代碼實現(xiàn)Map和Object互轉(zhuǎn)及Map和Json互轉(zhuǎn)

    這篇文章主要介紹了Java代碼實現(xiàn)map和Object互轉(zhuǎn)及Map和json互轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • java編寫簡單的E-mail發(fā)送端程序

    java編寫簡單的E-mail發(fā)送端程序

    這篇文章主要介紹了使用java語言編寫一個簡單的E-mail發(fā)送端程序,感興趣的小伙伴們可以參考一下
    2016-02-02
  • springmvc如何使用POJO作為參數(shù)

    springmvc如何使用POJO作為參數(shù)

    這篇文章主要介紹了springmvc如何使用POJO作為參數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01

最新評論

盐山县| 湘乡市| 大方县| 聂拉木县| 五指山市| 兴山县| 开封市| 杨浦区| 嘉荫县| 永宁县| 徐州市| 汕头市| 高淳县| 中牟县| 门头沟区| 岳西县| 衡东县| 加查县| 渭源县| 商河县| 禄丰县| 汽车| 广丰县| 陆良县| 剑川县| 屯昌县| 英吉沙县| 五常市| 右玉县| 军事| 陕西省| 沅陵县| 巨野县| 桂林市| 马龙县| 泰宁县| 南丰县| 泸溪县| 新巴尔虎右旗| 肥乡县| 门头沟区|