1、Spring Webflux示例项目
示例代码在这里:https://gitee.com/kimmking/native
代码很简单,就是建了一个Spring Boot项目(用了基于netty的Spring Webflux,而不是基于嵌入式tomcat的Spring Web):
application.yml里配置:
然后使用OpenJDK11(可以在此下载:https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/)运行 NativeApplication:
可以看到启动花了3.219s。
然后可以浏览器或者命令行访问。
% curl 'http://localhost:8888/user/findById?id=1'
{"id":1,"name":"KK1"}%
2、在linux上编译项目为native image
找一台Linux机器(比如Ubuntu/RedHat/CentOS),这里用了一台腾讯云的CentOS,然后安装git/OpenJDK11/maven/docker这几个软件。
yum install -y git
yum install -y java-11-openjdk.x86_64
yum install -y docker-ce
wget https://dlcdn.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip
unzip apache-maven-3.6.3-bin.zip
接着设置JAVA_HOME和M2_HOME,并加入到PATH变量,然后下载编译native代码。
git clone https://gitee.com/kimmking/native
cd native
mv pom.xml pom1.xml
mv native-pom.xml pom.xml // 用这个添加了native的pom
mvn spring-boot:build-image
一直到看到如下画面:
此时就已经把native的程序打包成了一个docker镜像:
然后可以运行这个镜像:
docker run --name native -p 8888:8888 -d native:0.0.1-SNAPSHOT
接着使用命令查看docker容器:
此时也可以使用curl访问一下:
效果跟上面使用JVM运行相同。
最后我们进入容器内部看一下:
docker run -it native:0.0.1-SNAPSHOT /bin/bash
可以看到,启动原生应用程序,只用了0.022s,比之前的方式快了146倍。
本文使用 文章同步助手 同步