Spring Boot 3将于2022年11月发布。候选版本2已经发布。
Spring Boot 3将随Spring AOT一起发布。Spring AOT生成额外的源代码,以避免反射调用。
引入Spring AOT生成GraalVM原生映像。然而,从理论上讲,Spring AOT也可以用于常规JVM应用程序,以加快启动过程(因为常规调用应该比反射调用快)。
不幸的是,我没有在Spring Boot 3参考文档中找到任何关于如何在常规JVM应用程序中使用Spring AOT的内容。您知道如何从常规JVM应用程序中的Spring AOT中获益吗?
介绍如何在JRE环境下运行AOT代码。
基本上,你必须像这样构建你的jar
mvn clean compile spring-boot:process-aot package
并像这样运行
java -DspringAot=true -jar your-application.jar
在Spring Boot中使用AOT的两种有用方法:
使用docker镜像
除了有Java>= 17和Gradle>= 7.3安装,在您的构建。Gradle你将添加以下插件:
id 'org.graalvm.buildtools.native' version '0.9.23'
初始构建。Gradle应该是这样的:
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.1.2'
id 'org.graalvm.buildtools.native' version '0.9.23'
}
group = 'com.test'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
就是这样。现在,您可以运行以下命令构建docker映像:
gradle bootBuildImage
现在你可以运行docker images
来查看你刚刚创建的图像并运行它:
docker run --rm <image_id>
将其编译为本机应用
在这种情况下,您应该应用与上面示例中相同的插件。此外,您还必须安装GraalVM>= 17和Gradle>= 7.3。然后,您可以运行以下命令来构建它:
gradle nativeCompile
和运行你的应用程序,你可以只运行:
/<app_name>/build/native/nativeCompile/<app_name>
,大家。值得一提的是,由于封闭世界假设,某些Spring特性可能无法正常工作,这会使反射更难实现。
我认为他们因为Spring倡导者的这个视频而走向了不同的方向。看起来AOT只与GraalVM一起使用。
回答你的问题,你只能在GraalVM中使用AOT的好处。