iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >用Spring Native将SpringBoot程序转换为GraalVM
  • 459
分享到

用Spring Native将SpringBoot程序转换为GraalVM

2024-04-02 19:04:59 459人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录spring发布了一个新工具Spring Native Beta,用于将现有的Spring Boot应用程序(用Java或Kotlin编写)转换为GraalVM本机映像。目标是在

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本机依赖项。

一些依赖项,比如springdatajpa,需要额外的配置来支持GraalVM。Spring团队通过插件提供这些额外的配置。例如,在Intitializr中添加了Spring数据JPA依赖项之后,两个额外的Maven插件Spring aot Maven plugin和hibernate enhance Maven plugin(包括它们的配置)被添加到pom.xml文件。

此时并非所有依赖项都受Spring Native支持。如果initializer生成的Spring项目中包含不支持的依赖项,则HELP.md 文件将列出它。

与任何其他Spring Boot应用程序一样,Initializer会自动创建适当的入口点类来运行应用程序:


@SpringBootApplication
public class NativeApplication {

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

接下来,提供一个REST controller来测试应用程序:


@Controller
public 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 images
native  0.0.1-SNAPSHOT ... 81.9MB

Docker容器在端口8080上启动:


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

启动容器后,应用程序几乎可以立即进行测试:


$ curl localhost:8080/native --silent
Native

以上就是用Spring Native将SpringBoot程序转换为GraalVM的详细内容,更多关于SpringBoot程序转换为GraalVM的资料请关注编程网其它相关文章!

--结束END--

本文标题: 用Spring Native将SpringBoot程序转换为GraalVM

本文链接: https://www.lsjlt.com/news/124677.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用Spring Native将SpringBoot程序转换为GraalVM
    目录Spring发布了一个新工具Spring Native Beta,用于将现有的Spring Boot应用程序(用Java或Kotlin编写)转换为GraalVM本机映像。目标是在...
    99+
    2024-04-02
  • 怎么用Spring Native将SpringBoot程序转换为GraalVM
    这篇文章主要介绍了怎么用Spring Native将SpringBoot程序转换为GraalVM,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Spring发布了一个新工具Sp...
    99+
    2023-06-14
  • 将python程序转换成exe程序
    将python程序转换成exe.一、 先安装python1、首先访问http://www.python.org/download/去下载最新的python版本。2、安装下载包,一路next。3、为计算机添加安装目录搭到环境变量,如图把pyt...
    99+
    2023-01-31
    程序 转换成 python
  • 将你的 Python 脚本转换为命令行程序
    在我的职业生涯中,我写过、用过和看到过很多随意的脚本。一些人需要半自动化完成任务,于是它们诞生了。一段时间后,它们变得越来越大。它们在一生中可能转手很多次。我常常希望这些脚本提供更多的命令行工具式的感觉。但是,从一次性脚本到合适的工具,真正...
    99+
    2023-05-14
    Python
  • 小程序如何将字符串转换为数字
    这篇“小程序如何将字符串转换为数字”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“小程序如何将字符串转换为数字”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们...
    99+
    2023-06-26
  • 如何将随机React应用程序转换为微前端
    今天就跟大家聊聊有关如何将随机React应用程序转换为微前端,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是微型前端方法微前端术语首先在2016...
    99+
    2024-04-02
  • 使用 windows.h 将 C 转换为 Golang
    php小编子墨将为您介绍如何使用windows.h将C语言代码转换为Golang。Windows.h是Windows操作系统的头文件,其中包含了许多用于系统编程的函数和数据类型。通过将...
    99+
    2024-02-09
  • SpringBoot应用程序转换成WAR文件详解
    目录WAR与JAR新应用现有应用程序SpringBootServletInitializer建立WAR运行WAR如何在不牺牲嵌入式应用服务器的直接执行能力的情况下,将 JAR Spr...
    99+
    2022-11-13
    SpringBoot应用程序转换成WAR SpringBoot转换WAR
  • 将具有多个程序的 GOPATH 存储库转换为 GO 模块
    Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《将具有多个程序的 GOPATH 存储库转换为 GO 模块》带大家来了解一下##cont...
    99+
    2024-04-04
  • SpringBoot返回对象时,如何将Long类型转换为String
    目录SpringBoot返回对象将Long类型转换为String1.自定义ObjectMapper2.把MappingJackson2HttpMessageConverter3.定义...
    99+
    2024-04-02
  • 小程序为什么要将es6转es5
    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。小程序将es6转es5的原因原因:为了浏览器兼容,以及为了在node.js环境可以顺畅运行应用程序。ES6作为JS的新规范,加入了很多新的语法和API,但...
    99+
    2022-11-22
    javascript ES6
  • 使用库将 PHP 数组转换为 JSON
    php 数组可通过 json_encode() 直接转换为 json。此外,使用库(如 json-serialize)时:安装库实例化序列化器序列化数组输出 json 字符串这提供了附加...
    99+
    2024-04-30
    php json laravel composer
  • 怎么使用PHP将SVG转换为JPEG
    本篇内容主要讲解“怎么使用PHP将SVG转换为JPEG”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用PHP将SVG转换为JPEG”吧!为什么要将SVG转换为JPEGSVG图像是可缩放的,...
    99+
    2023-07-05
  • 利用java如何将GBK转换为uft8
    这期内容当中小编将会给大家带来有关利用java如何将GBK转换为uft8,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体如下:windows下的默认编码为GBK还有gb2312,如何把gbk的java工...
    99+
    2023-05-31
    java gbk uft8
  • uni-app如何将小程序转化为app应用
    现今移动互联网的发展,越来越多的个人和企业开始使用小程序来扩大自己的业务。但是,有很多人可能会遇到一个问题,在小程序使用中感到不够方便,希望将小程序转化为APP应用来提升用户体验。本文将为大家介绍如何将小程序转化为APP应用。一、了解uni...
    99+
    2023-05-14
  • PHP教程:如何将月份转换为中文
    PHP教程:如何将月份转换为中文 在项目开发中,有时候我们需要将日期或者时间中的月份转换为中文,以便更好地展示给用户。在PHP中,我们可以通过一些简单的代码实现这个功能。接下来,我将为...
    99+
    2024-04-02
  • 如何使用PHP将数组转换为JSON
    PHP中的数组转换为JSON是一个常见的任务。JSON是现代应用程序中最常用的数据格式之一,而PHP是一种强大的服务器端语言,支持处理JSON数据。在本文中,我们将探讨如何使用PHP将数组转换为JSON。我们将着重介绍以下主题:什么是JSO...
    99+
    2023-05-14
  • 使用泛型将结构转换为映射
    最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《使用泛型将结构转换为映射》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以...
    99+
    2024-04-04
  • 怎么用python包pdfkit将HTML转换为PDF
    本篇内容介绍了“怎么用python包pdfkit将HTML转换为PDF”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python包-pdfk...
    99+
    2023-06-30
  • 使用 PHP 将数组高效转换为 JSON
    将 php 数组转换为 json 的高效方法:使用 json_encode() 函数,语法:json_encode($value)使用 serialize() 和 json_decode...
    99+
    2024-05-01
    json 转换 格式化输出
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作