使用 Spring Boot 和 GraalVM 实现原生(系列六)

举报
小云悠悠zZ 发表于 2023/01/30 16:06:58 2023/01/30
【摘要】 Spring有很多实现。Spring Native 带来了一些仅在构建时处于活动状态的新接口。它们动态地为构建提供提示。理想情况下,这些处理器实现将存在于可重用的库中。转到 Spring 初始化器,命名项目处理器,然后添加 .在 IDE 中打开生成的项目,并通过从 pom.xml 中删除节点来删除所有 Maven 插件配置。

构建时和运行时处理器

Spring有很多实现。Spring Native 带来了一些仅在构建时处于活动状态的新接口。它们动态地为构建提供提示。理想情况下,这些处理器实现将存在于可重用的库中。转到 Spring 初始化器,命名项目处理器,然后添加 .在 IDE 中打开生成的项目,并通过从 pom.xml 中删除节点来删除所有 Maven 插件配置。您需要手动添加新库:ProcessorProcessorSpring Nativebuild

 <dependency>
  <groupId>org.springframework.experimental</groupId>
  <artifactId>spring-aot</artifactId>
  <version>${spring-native.version}</version>
  <scope>provided</scope>
</dependency>

这个Maven构建产生了一个常规的Java'.jar'工件。您可以像安装和部署任何Maven“.jar”一样安装和部署它:mvn -DskipTests clean install 

这个新库引入了新的类型,包括:

  • BeanFactoryNativeConfigurationProcessor:当您需要等效于的构建时间时使用BeanFactoryPostProcessor
  • BeanNativeConfigurationProcessor:当您需要等效的构建时间时使用BeanPostProcessor

我发现自己大部分时间都在这两个界面中工作。在每个接口中,您会收到对可以检查的内容的引用,以及对可用于以编程方式提供提示的注册表的引用。如果使用 ,则会收到 Bean 工厂中 Bean 的 Bean 元数据实例。如果您正在使用 ,您将收到对整个潜在客户本身的引用。注意:您必须注意只使用 Bean 名称和实例,而不要使用实际的 bean。知道运行时将存在的所有对象,但它不会实例化它们。相反,它可以帮助我们理解正在运行的应用程序的形状 - 类,方法等 - 以派生适当的提示。BeanNativeConfigurationProcessorBeanFactoryNativeConfigurationProcessorBeanFactoryBeanDefinitionBeanFactory

您不是将这些类型注册为常规的 Spring bean,而是在服务加载器中注册。因此,给定 call 的实现和 call 的实现,该文件可能如下所示:Processorspring.factoriesBeanFactoryNativeConfigurationProcessorcom.example.nativex.MyBeanFactoryNativeConfigurationProcessorBeanNativeConfigurationProcessorcom.example.nativex.MyBeanNativeConfigurationProcessorspring.factories

org.springframework.aot.context.bootstrap.generator.infrastructure.nativex.BeanFactoryNativeConfigurationProcessor=\
  com.example.nativex.MyBeanFactoryNativeConfigurationProcessor
org.springframework.aot.context.bootstrap.generator.infrastructure.nativex.BeanNativeConfigurationProcessor=\
  com.example.nativex.MyBeanNativeConfigurationProcessor


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。