Spring AOT 是一个在构建时分析应用程序并生成其优化版本的过程。 在本机映像中运行 Spring 是强制性步骤。ApplicationContextSpring中文文档

有关 Spring Boot 中 GraalVM 本机映像支持的概述,请查看参考文档

Spring Boot Maven 插件提供了可用于对应用程序和测试代码执行 AOT 处理的目标。Spring中文文档

有关 Spring Boot 中 GraalVM 本机映像支持的概述,请查看参考文档

处理应用程序

若要将应用程序配置为使用此功能,请为目标添加执行,如以下示例所示:process-aotSpring中文文档

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<executions>
		<execution>
			<id>process-aot</id>
			<goals>
				<goal>process-aot</goal>
			</goals>
		</execution>
	</executions>
</plugin>

由于在构建时已做好充分准备,因此还评估了条件。 这与常规 Spring Boot 应用程序在运行时所做的相比有一个重要的区别。 例如,如果要选择加入或退出某些功能,则需要配置构建时使用的环境。 因此,目标与运行目标共享许多属性。BeanFactoryprocess-aotSpring中文文档

使用本机配置文件

如果用作项目,则可以使用配置文件来简化构建本机映像所需的步骤。spring-boot-starter-parentparentnativeSpring中文文档

配置文件配置以下内容:nativeSpring中文文档

若要从配置文件中获益,表示应用程序的模块应定义两个插件,如以下示例所示:nativeSpring中文文档

<plugin>
	<groupId>org.graalvm.buildtools</groupId>
	<artifactId>native-maven-plugin</artifactId>
</plugin>
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

单个项目可以使用云原生 BuildpackNative Image Build Tools 在命令行上触发原生映像的生成。Spring中文文档

若要将配置文件用于多模块项目,可以创建配置文件的自定义项,以便它调用您的首选技术。nativenativeSpring中文文档

要在该阶段绑定云原生 Buildpack,请将以下内容添加到多模块项目的根 POM:packageSpring中文文档

<profile>
	<id>native</id>
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
					<executions>
						<execution>
							<id>build-image</id>
							<goals>
								<goal>build-image-no-fork</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</profile>

以下示例对本机生成工具执行相同的操作:Spring中文文档

<profile>
	<id>native</id>
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.graalvm.buildtools</groupId>
					<artifactId>native-maven-plugin</artifactId>
					<executions>
						<execution>
							<id>build-image</id>
							<goals>
								<goal>compile-no-fork</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</profile>

完成上述条件后,可以构建多模块项目,并在相关子模块中生成本机映像,如以下示例所示:Spring中文文档

$ mvn package -Pnative
“相关”子模块是表示 Spring Boot 应用程序的模块。 此类模块必须如上所述定义本机构建工具和 Spring Boot 插件。
“相关”子模块是表示 Spring Boot 应用程序的模块。 此类模块必须如上所述定义本机构建工具和 Spring Boot 插件。

spring-boot:process-aot

org.springframework.boot:spring-boot-maven-plugin:3.3.1Spring中文文档

在应用程序上调用 AOT 引擎。Spring中文文档

必需参数

名字 类型 违约

类目录Spring中文文档

FileSpring中文文档

${project.build.outputDirectory}Spring中文文档

生成类Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/main/classesSpring中文文档

生成的资源Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/main/resourcesSpring中文文档

生成源Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/main/sourcesSpring中文文档

参数详细信息

arguments

AOT 处理时应考虑的应用程序参数。Spring中文文档

名字Spring中文文档

argumentsSpring中文文档

类型Spring中文文档

java.lang.String[]Spring中文文档

默认值Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

classesDirectory

包含应打包到归档文件中的类和资源文件的目录。Spring中文文档

名字Spring中文文档

classesDirectorySpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.outputDirectory}Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

compilerArguments

应提供给 AOT 编译过程的参数。在命令行中,确保在引号之间换行多个值。Spring中文文档

名字Spring中文文档

compilerArgumentsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.compilerArgumentsSpring中文文档

因为Spring中文文档

excludeGroupIds

要排除的 groupId 名称的逗号分隔列表(完全匹配)。Spring中文文档

名字Spring中文文档

excludeGroupIdsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.excludeGroupIdsSpring中文文档

因为Spring中文文档

1.1.0Spring中文文档

excludes

要排除的项目定义的集合。该元素定义必需组件和组件以及可选组件。配置为属性时,值应以逗号分隔,并用冒号分隔的组件分隔:ExcludegroupIdartifactIdclassifiergroupId:artifactId,groupId:artifactId:classifierSpring中文文档

名字Spring中文文档

excludesSpring中文文档

类型Spring中文文档

java.util.ListSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.excludesSpring中文文档

因为Spring中文文档

1.1.0Spring中文文档

generatedClasses

包含生成的类的目录。Spring中文文档

名字Spring中文文档

generatedClassesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/main/classesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

generatedResources

包含生成的资源的目录。Spring中文文档

名字Spring中文文档

generatedResourcesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/main/resourcesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

generatedSources

包含生成的源的目录。Spring中文文档

名字Spring中文文档

generatedSourcesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/main/sourcesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

includes

要包含的项目定义的集合。该元素定义必需组件和组件以及可选组件。配置为属性时,值应以逗号分隔,并用冒号分隔的组件分隔:IncludegroupIdartifactIdclassifiergroupId:artifactId,groupId:artifactId:classifierSpring中文文档

名字Spring中文文档

includesSpring中文文档

类型Spring中文文档

java.util.ListSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.includesSpring中文文档

因为Spring中文文档

1.2.0Spring中文文档

jvmArguments

应与 AOT 进程关联的 JVM 参数。在命令行中,确保在引号之间换行多个值。Spring中文文档

名字Spring中文文档

jvmArgumentsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.jvmArgumentsSpring中文文档

因为Spring中文文档

mainClass

要用作 AOT 进程源的主类的名称。如果未指定,则将使用找到的第一个包含“main”方法的编译类。Spring中文文档

名字Spring中文文档

mainClassSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.main-classSpring中文文档

因为Spring中文文档

profiles

要考虑 AOT 处理的 Spring 配置文件。Spring中文文档

名字Spring中文文档

profilesSpring中文文档

类型Spring中文文档

java.lang.String[]Spring中文文档

默认值Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

systemPropertyVariables

要传递给 AOT 进程的 JVM 系统属性列表。Spring中文文档

名字Spring中文文档

systemPropertyVariablesSpring中文文档

类型Spring中文文档

java.util.MapSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字 类型 违约

类目录Spring中文文档

FileSpring中文文档

${project.build.outputDirectory}Spring中文文档

生成类Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/main/classesSpring中文文档

生成的资源Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/main/resourcesSpring中文文档

生成源Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/main/sourcesSpring中文文档

名字 类型 违约

参数Spring中文文档

String[]Spring中文文档

compiler参数Spring中文文档

StringSpring中文文档

排除GroupIdsSpring中文文档

StringSpring中文文档

排除Spring中文文档

ListSpring中文文档

包括Spring中文文档

ListSpring中文文档

jvm参数Spring中文文档

StringSpring中文文档

mainClassSpring中文文档

StringSpring中文文档

配置 文件Spring中文文档

String[]Spring中文文档

Spring中文文档

booleanSpring中文文档

falseSpring中文文档

systemProperty变量Spring中文文档

MapSpring中文文档

名字Spring中文文档

argumentsSpring中文文档

类型Spring中文文档

java.lang.String[]Spring中文文档

默认值Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

classesDirectorySpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.outputDirectory}Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

compilerArgumentsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.compilerArgumentsSpring中文文档

因为Spring中文文档

名字Spring中文文档

excludeGroupIdsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.excludeGroupIdsSpring中文文档

因为Spring中文文档

1.1.0Spring中文文档

名字Spring中文文档

excludesSpring中文文档

类型Spring中文文档

java.util.ListSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.excludesSpring中文文档

因为Spring中文文档

1.1.0Spring中文文档

名字Spring中文文档

generatedClassesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/main/classesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

generatedResourcesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/main/resourcesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

generatedSourcesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/main/sourcesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

includesSpring中文文档

类型Spring中文文档

java.util.ListSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.includesSpring中文文档

因为Spring中文文档

1.2.0Spring中文文档

名字Spring中文文档

jvmArgumentsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.jvmArgumentsSpring中文文档

因为Spring中文文档

名字Spring中文文档

mainClassSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.main-classSpring中文文档

因为Spring中文文档

名字Spring中文文档

profilesSpring中文文档

类型Spring中文文档

java.lang.String[]Spring中文文档

默认值Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

skipSpring中文文档

类型Spring中文文档

booleanSpring中文文档

默认值Spring中文文档

falseSpring中文文档

User 属性Spring中文文档

spring-boot.aot.skipSpring中文文档

因为Spring中文文档

名字Spring中文文档

systemPropertyVariablesSpring中文文档

类型Spring中文文档

java.util.MapSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

加工测试

AOT 引擎可以应用于使用 Spring 的测试上下文框架的 JUnit 5 测试。 AOT 引擎处理合适的测试以生成代码。ApplicationContextInitializerSpring中文文档

若要将应用程序配置为使用此功能,请为目标添加执行,如以下示例所示:process-test-aotSpring中文文档

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<executions>
		<execution>
			<id>process-test-aot</id>
			<goals>
				<goal>process-test-aot</goal>
			</goals>
		</execution>
	</executions>
</plugin>
如果使用 ,则在启用配置文件时会自动配置此执行。spring-boot-starter-parentnativeTest

与应用程序 AOT 处理一样,在构建时已做好充分准备。BeanFactorySpring中文文档

如果使用 ,则在启用配置文件时会自动配置此执行。spring-boot-starter-parentnativeTest

spring-boot:process-test-aot

org.springframework.boot:spring-boot-maven-plugin:3.3.1Spring中文文档

在测试中调用 AOT 引擎。Spring中文文档

必需参数

名字 类型 违约

类目录Spring中文文档

FileSpring中文文档

${project.build.outputDirectory}Spring中文文档

生成类Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/main/classesSpring中文文档

生成的资源Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/test/resourcesSpring中文文档

生成源Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/test/sourcesSpring中文文档

生成的测试类Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/test/classesSpring中文文档

testClasses目录Spring中文文档

FileSpring中文文档

${project.build.testOutputDirectory}Spring中文文档

参数详细信息

classesDirectory

包含应用于运行测试的类和资源文件的目录。Spring中文文档

名字Spring中文文档

classesDirectorySpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.outputDirectory}Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

compilerArguments

应提供给 AOT 编译过程的参数。在命令行中,确保在引号之间换行多个值。Spring中文文档

名字Spring中文文档

compilerArgumentsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.compilerArgumentsSpring中文文档

因为Spring中文文档

excludeGroupIds

要排除的 groupId 名称的逗号分隔列表(完全匹配)。Spring中文文档

名字Spring中文文档

excludeGroupIdsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.excludeGroupIdsSpring中文文档

因为Spring中文文档

1.1.0Spring中文文档

excludes

要排除的项目定义的集合。该元素定义必需组件和组件以及可选组件。配置为属性时,值应以逗号分隔,并用冒号分隔的组件分隔:ExcludegroupIdartifactIdclassifiergroupId:artifactId,groupId:artifactId:classifierSpring中文文档

名字Spring中文文档

excludesSpring中文文档

类型Spring中文文档

java.util.ListSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.excludesSpring中文文档

因为Spring中文文档

1.1.0Spring中文文档

generatedClasses

包含生成的测试类的目录。Spring中文文档

名字Spring中文文档

generatedClassesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/main/classesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

generatedResources

包含生成的测试资源的目录。Spring中文文档

名字Spring中文文档

generatedResourcesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/test/resourcesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

generatedSources

包含生成的源的目录。Spring中文文档

名字Spring中文文档

generatedSourcesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/test/sourcesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

generatedTestClasses

包含生成的测试类的目录。Spring中文文档

名字Spring中文文档

generatedTestClassesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/test/classesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

includes

要包含的项目定义的集合。该元素定义必需组件和组件以及可选组件。配置为属性时,值应以逗号分隔,并用冒号分隔的组件分隔:IncludegroupIdartifactIdclassifiergroupId:artifactId,groupId:artifactId:classifierSpring中文文档

名字Spring中文文档

includesSpring中文文档

类型Spring中文文档

java.util.ListSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.includesSpring中文文档

因为Spring中文文档

1.2.0Spring中文文档

jvmArguments

应与 AOT 进程关联的 JVM 参数。在命令行中,确保在引号之间换行多个值。Spring中文文档

名字Spring中文文档

jvmArgumentsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.jvmArgumentsSpring中文文档

因为Spring中文文档

systemPropertyVariables

要传递给 AOT 进程的 JVM 系统属性列表。Spring中文文档

名字Spring中文文档

systemPropertyVariablesSpring中文文档

类型Spring中文文档

java.util.MapSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

testClassesDirectory

包含应打包到归档文件中的类和资源文件的目录。Spring中文文档

名字Spring中文文档

testClassesDirectorySpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.testOutputDirectory}Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字 类型 违约

类目录Spring中文文档

FileSpring中文文档

${project.build.outputDirectory}Spring中文文档

生成类Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/main/classesSpring中文文档

生成的资源Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/test/resourcesSpring中文文档

生成源Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/test/sourcesSpring中文文档

生成的测试类Spring中文文档

FileSpring中文文档

${project.build.directory}/spring-aot/test/classesSpring中文文档

testClasses目录Spring中文文档

FileSpring中文文档

${project.build.testOutputDirectory}Spring中文文档

名字 类型 违约

compiler参数Spring中文文档

StringSpring中文文档

排除GroupIdsSpring中文文档

StringSpring中文文档

排除Spring中文文档

ListSpring中文文档

包括Spring中文文档

ListSpring中文文档

jvm参数Spring中文文档

StringSpring中文文档

Spring中文文档

booleanSpring中文文档

falseSpring中文文档

systemProperty变量Spring中文文档

MapSpring中文文档

名字Spring中文文档

classesDirectorySpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.outputDirectory}Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

compilerArgumentsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.compilerArgumentsSpring中文文档

因为Spring中文文档

名字Spring中文文档

excludeGroupIdsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.excludeGroupIdsSpring中文文档

因为Spring中文文档

1.1.0Spring中文文档

名字Spring中文文档

excludesSpring中文文档

类型Spring中文文档

java.util.ListSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.excludesSpring中文文档

因为Spring中文文档

1.1.0Spring中文文档

名字Spring中文文档

generatedClassesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/main/classesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

generatedResourcesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/test/resourcesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

generatedSourcesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/test/sourcesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

generatedTestClassesSpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.directory}/spring-aot/test/classesSpring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

includesSpring中文文档

类型Spring中文文档

java.util.ListSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.includesSpring中文文档

因为Spring中文文档

1.2.0Spring中文文档

名字Spring中文文档

jvmArgumentsSpring中文文档

类型Spring中文文档

java.lang.StringSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

spring-boot.aot.jvmArgumentsSpring中文文档

因为Spring中文文档

名字Spring中文文档

skipSpring中文文档

类型Spring中文文档

booleanSpring中文文档

默认值Spring中文文档

falseSpring中文文档

User 属性Spring中文文档

spring-boot.aot.skipSpring中文文档

因为Spring中文文档

名字Spring中文文档

systemPropertyVariablesSpring中文文档

类型Spring中文文档

java.util.MapSpring中文文档

默认值Spring中文文档

User 属性Spring中文文档

因为Spring中文文档

名字Spring中文文档

testClassesDirectorySpring中文文档

类型Spring中文文档

java.io.FileSpring中文文档

默认值Spring中文文档

${project.build.testOutputDirectory}Spring中文文档

User 属性Spring中文文档

因为Spring中文文档