Spring 的大部分内部工作都依赖于反射

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

Spring 的大部分内部工作都依赖于反射

Post by roseline371274 »


Spring 是 JavaEE 的常见模拟,它不需要实现 JavaEE API 即可工作。我个人很喜欢 Spring 和 Spring Boot,但是当我们尝试在 GraalVM 的原生镜像中使用 Spring 时,我们又会遇到问题。与 Thorntail 类似,甚至更甚,。 Spring 背后的公司 Pivotal 确实承诺在最新的 Spring 5 版本中与 GraalVM 兼容。在撰写本文时,spring-fu和SpringR是使简单的 Spring 应用程序在 GraalVM 中运行的几个示例。然而,更复杂的应用程序很快就会遇到问题。

Micronaut 和 Quarkus
Micronaut 和 Quarkus 都是该领域中相对较新的框架,有望成为 Spring Boot 和 Thorntail 的类似物,但不使用反射。

我过去曾使用 Micronaut 取得过一些成功,我可能会在以后的文章中再次谈到它。 Micronaut 提供了许多工具,使创建与 GraalVM 兼容的应用程序变得非常容易。 GraalCloassLoadingAnalyzer 将生成您的reflection-config.json。该 华人海外数据 文件指示 GraalVM 的 JVM 需要加载哪些类以及如何提前连接反射以绕过动态类加载。

Quarkus 承诺可以与 GraalVM 开箱即用,无需任何解决方法或修复。 Quarkus 比 Micronaut 还要新,但已经获得 RedHat 的赞助,并可能成为未来的发展方向。我将在后续的文章中探讨 Quarkus。

让我们从小事做起:Javalin
看看我们的选择,我们有一些更大的框架可供使用,如 Micronaut 和 Quarkus。两者涵盖的不仅仅是简单的 REST API。对于首次尝试 GraalVM 原生镜像来说,这可能有点太多了。

我将从小处着手,使用一个能做一件事并且做得很好的框架:Javalin。Javalin是一个轻量级的 Web 框架,允许您仅用几行代码创建 REST API。他们提供了有关如何将 Javalin 与 GraalVM 结合使用的精彩教程,您可以在此处找到。

如您所见,我们仍然遇到反射问题,我们仍然需要生成或创建我们的reflection-config.json 文件。虽然对于我们创建的小型应用程序来说是可行的,但随着我们开始添加更多功能,它会变得越来越复杂。
Post Reply