尝试官方的第一个SpringNative 0.11程序(WSL2)
Spring Native是Spring推出微服务体系Spring Cloud之后的又一大举动,从名字可以猜出,Spring Native是一门面向云原生的技术。如果你还对这个概念不太理解,可以多看一点东西,比如Oracle的GraalVM、红帽的quarkus等。
现在 我们跟着官方示例 Spring Native Docs 一起来跑一下最简单的SN程序。

官方提供了两种方式来构建本地镜像,第一种是基于Docker容器的,我试了好几天也没成功,执行到mvn spring-boot:build-image就失败了,说有“No valid dependencies”。所以这里演示第二种,直接生成可执行文件,这种我成功了。
前奏
使用第二种方法不需要Docker,所以可以关掉了,但是需要调大内存(第一种应该也需要)。
1. 提升可用内存
因为我用的是WSL,所以就是提高它的内存。打开C盘下用户目录的.wslconfig(没有就创建一个)

将其中的memory改成16G,这是我电脑的全部内存大小。如果你电脑内存不够16G,是多少全分给WSL;如果超过了16G,写16G也够,随你。
2. 设置代理
这个过程会依赖GITHUB等一些网站,如果不能外窥,就会总是失败。我尝试了各种网上的代理方法,就算配置成功也不能成功通信,最后还是使用了付费软件。
如果你有自己的SOCKS服务器那说明你会成功的。如果没有,我这边用的是大熊猫,你可以试试,不算太贵,还算稳定,主要是不限流量

找到Linux版本下载下来是一个appimage文件,执行它就打开了登录窗口。还好现在WSL支持图形界面了,不然还是用不了。
准备
接下来按照官方指导,安装GraalVM并下载代码。
1. 安装SKDMAN
在WSL中执行curl -s "https://get.sdkman.io" | bash即可(这一步不需要能够外窥)。
执行成功后,可以执行sdk list java看看正常不。

2. 安装GraalVM
官方安装的版本是11,我们这里使用17.
哦对了,SpringNative 0.11虽然支持Java8,但是后续正式版估计只支持17+,所以这里我也用17。没尝试Java8,有兴趣可以自己试一下。正常GraalVM是不支持java8的,可能需要协调
执行 sdk install java 21.3.0.r17-grl,这个过程需要外窥,所以打开代理。我也折腾了半天才提示成功。
成功后执行sdk use java 21.3.0.r17-grl(可以通过tab补全),然后重启命令行才行,不用重启WSL。这个也折腾了好久,后来看到github上有人报issue才解决。
可以通过sdk current查看结果:

另外需要将本地镜像扩展native-image引入JDK,执行gu install native-image。如果说gu这个命令找不到,可以去GraalVM的bin目录寻找,在WSL的~/.sdkman/candidates/java/21.3.0.r17-grl/bin下面,不过它是一个链接:

3. 配置maven依赖
根据 Sample Project Setup 修改pom.xml。这一整节的内容都要完整修改(除了Test部分可以不改)。
构建
在complete目录执行 mvn -Pnative -DskipTests package 即可,这个过程有点长,而且非常占用内存,大约7个G。打包结束后会立即释放内存的,相当于给你电脑进行了一次清理:)
执行
在target目录下已经打好可执行文件了:

运行这个文件即可。由于是原生应用,启动应该贼快,这也是构建原生应用的目的之一。然后访问 localhost:8080/greeting
最后
目前云原生概念和技术都在高速发展,Java领域的就主要集中在Graal上面,SN和quarkus也都基于GraalVM。可以继续钻研。
尝试官方的第一个SpringNative 0.11程序(WSL2)的更多相关文章
- solaris X86-64下一个ORACLE战斗11.2.0.3.8在一波折叠补丁
solaris X86-64下一个ORACLE战斗11.2.0.3.8补丁: 正确的步骤: 1.BUG6880880 .OPATCH补丁 2.BUG16902043.11.2.0.3.8补丁 情感是练 ...
- Kafka 0.11.0.0 实现 producer的Exactly-once 语义(官方DEMO)
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients&l ...
- Tomcat8.0.11优化相关
Tomcat 8.0.X: 要了解tomcat的优化,我们先看看Tomcat的官方定义:The Apache Tomcat® software is an open source implementa ...
- Redis-4.0.11集群配置
版本:redis-3.0.5 redis-3.2.0 redis-3.2.9 redis-4.0.11 参考:http://redis.io/topics/cluster-tutorial. 集群 ...
- Mysql8.0.11简介,新特性
MySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 注意:从 MySQL 5.7 升级到 MySQL 8 ...
- MySQL-mysql 8.0.11安装教程 windows
网上的教程有很多,基本上大同小异.但是安装软件有时就可能因为一个细节安装失败.我也是综合了很多个教程才安装好的,所以本教程可能也不是普遍适合的. 安装环境:win7 1.下载zip安装包: MySQL ...
- 微信小程序0.11.122100版本新功能解析
微信小程序0.11.122100版本新功能解析 新版本就不再吐槽了,整的自己跟个愤青似的.人老了,喷不动了,把机会留给年轻人吧.下午随着新版本开放,微信居然破天荒的开放了开发者论坛.我很是担心官方 ...
- Kafka 0.11.0.0 实现 producer的Exactly-once 语义(中文)
很高兴地告诉大家,具备新的里程碑意义的功能的Kafka 0.11.x版本(对应 Confluent Platform 3.3)已经release,该版本引入了exactly-once语义,本文阐述的内 ...
- MySQL 8.0.11安装配置
官网地址:https://dev.mysql.com/downloads/mysql/ 我这里是RHEL6.5的系统,因此选择RedHat 6 x86,64bit操作系统---下载第一个RPM Bun ...
- MySQL8.0.11 组复制配置
my.cnf [mysql] prompt='node2 [\h] {\u} (\d) > ' # [client] user = sa password = cc.123 port = 22 ...
随机推荐
- CentOS7部署ES(单机)
一.创建路径,解压 ## 创建路径 [root@localhost /]# cd /data [root@localhost data]# mkdir ES ## 解压 [root@localhost ...
- 5GC 关键技术之 MEC 边缘计算
目录 文章目录 目录 前文列表 MEC 边缘计算 ETSI MEC 标准化参考模型 MEC 架构设计原则 MEC 分层架构 MEC 系统架构 MEC 软件架构 MEC in NFV 融合架构 ETSI ...
- Azure Service Principals ----- Azure 上最好保守的秘密的服务
一,引言 Azure Service Principals 是 Azure Active Directory (AAD) 中的一种标识,代表应用程序,服务,自动化流程.Service Principa ...
- C# WPF 坦克大战
wpf写的.主要是Canvas做画布 和类似的Rectangle的自定义类 采用了画面帧的思想,子弹 坦克移动 效果 都是 在主界面用一个定时器 循环,每秒60帧,这样做的好处,对比我之前做的炸弹人游 ...
- Spring Security 初学
Spring Security 初学 声明:本篇文章无源码解析,属于初学范围,本文采用SpringBoot+thymeleaf的项目. 实现 SpringSecurity 分三步走 继承 WebSec ...
- WPF开发快速入门【4】自定义控件与用户控件
概述 本文描述WPF的自定义控件和用户控件. 自定义控件 前面文章介绍了WPF的ControlTemplate,当我们对系统控件自带的样式不太满意时,我们可以通过控件模板自定义用户的样式,以Butto ...
- Windows10 LTSC版,比Win7还干净
在Windows操作系统的发展历程中,每一个版本都承载着微软对用户需求的深度理解和技术创新.其中,Windows 7以其稳定.高效和简洁的特点,赢得了众多用户的喜爱. 然而,随着技术的不断进步和用户需 ...
- C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件夹体积很大
现象:大量调用.p12证书时,C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件夹变得越来越大. 调用代码: X509Certificate2 x50 ...
- SRE Google 运维解密读书笔记一:SRE 方法论概述
SRE Google 运维解密,是 SRE 领域的启蒙之作,讲述了 Google 的 SRE 实践,SRE 就是从 Google 流传出来的.本文是读书笔记,第一篇,概述 SRE 方法论.帮大家把书读 ...
- 流程控制之for循环结构
1.for循环使用场景 1. 需要反复.重复执行的任务 2. 如创建100个用户,打印一百遍 chaoge666.插入数据库一万条数据等. 2.for语法 for 变量名 in 取值列表 do 每次循 ...