GraalVM – 原生镜像 – 依赖注入

Real-time financial market data for stocks and trends.
Post Reply
roseline371274
Posts: 540
Joined: Mon Dec 23, 2024 3:20 am

GraalVM – 原生镜像 – 依赖注入

Post by roseline371274 »

这篇文章是有关 GraalVM 系列文章的第三部分。在上一篇文章中,我解释了如何使用 GraalVM 和原生镜像创建一个简单的 REST API。本系列的第一篇文章讨论了如何设置环境并开始使用。

依赖注入
对于本节,我们希望更多地转向您期望 Java EE 应用程序提供的功能。我们已经介绍了 Webservices 和使用 Spark 的基础知识。下一步我们尝试添加依赖注入。我们有两个选择:

在 Spark 之上添加 DI 框架。
切换到另一个包含 DI 的框架。
事实证明,第一种选择相当具有挑战性。不去细说,我遇到了很多与 GraalVM 不支持 赌场数据 反射相关的问题。我使用 Google 的 Dagger 2 框架取得了最大的成功,但却无法运行本机图像。

至于切换到不同的框架,我们需要牢记两个大的限制。首先,我们不能轻易使用反射。其次,我们需要能够创建一个 fat-jar。第三,我们不能依赖外部应用服务器。这三个限制的组合已经排除了 Spring 和 CDI,它们是目前最流行的 Java 框架,它们都严重依赖反射。

有一些报告称,将 CDI 与 Standalone Weld(Weld SE)或 Thorntail 结合使用可以成功创建 fat-jar,但我们无法重现这些结果。 Pivotal 的员工正在致力于实现 GraalVM 与 Spring 5 的兼容性,但这仍处于早期开发阶段,并且似乎主要关注 Spring、  Spring FU 和 JaFu/KoFu的无服务器和功能部分。

Micronaut是较新的框架之一,并且明确声明了与 GraalVM 的兼容性 。尽管它还比较新,但它已经提供了与 Spring 几乎相同的功能。您可以在此处快速比较两者 。

微型航天器
Micronaut 使用它自己的 CLI 工具为您生成启动项目。您可以从他们的网站获取 cli 或使用 SDKman 来安装它。您可能需要对 GraalVM 的版本进行一些调整才能使其正常工作。我设法回滚到 rc8 并使其稳定运行。再次,您可以使用 SDK 来安装和使用特定版本的 GraalVM。
Post Reply