Gluon 默认使用啥 CDI 机制?
Posted
技术标签:
【中文标题】Gluon 默认使用啥 CDI 机制?【英文标题】:What CDI mechanism is Gluon using by default?Gluon 默认使用什么 CDI 机制? 【发布时间】:2021-12-04 12:28:04 【问题描述】:Gluon Samples 向我们展示了如何使用 @Inject 注释将我们的类依赖注入 (DI) 到其他类中。我们还看到使用 @PostConstruct 注释的方法允许我们初始化一个“Application Context”代表我们实例化的类,然后在其他地方注入对它的引用。
在使用 JavaFX/Gluon 进行移动开发之前,我的经验是使用 SpringFramework 进行 DI 的服务器端应用程序。但是现在,我不明白如何获取对我的应用程序的 Bean 上下文的句柄/引用,从而我可以获取一个单例 bean 以在托管 bean 上下文之外的静态代码中使用 .
我在Gluon Developer Documentation 中没有看到关于如何完成 CDI 的说明。我发现教程like this one 解释了 Weld 是 CDI 的 Java EE 参考实现,甚至可以在 Java SE 中工作。但尝试在我的代码中开始:
private Weld weld;
不会导致我的 IDE 允许我从应用程序的 maven 依赖项列表中导入该类。那么,Gluon 中 DI 的魔力不是来自 Weld 的使用吗? JavaFX 中一些独立的explanations of using Weld 似乎都是很老的文章了,暗示再也没有人这样做CDI了。
然后我找到了this 6 year old Gluon announcement 关于Gluon Ignite。阅读我能找到的内容,包括README at GitHub,我认为这可能不是我正在寻找的。它似乎与那些在他们的 Gluon 应用程序中实现 Guice、Spring 或其他 DI 框架的人有关。但我还没有在我的工作中引入任何这些 - 然而,正如我在这篇文章的顶部所指出的,DI 已经在我的 Gluon 移动应用程序中工作了。
我有兴趣使用业界知名的 DI 框架之一,但没有关于它的 Gluon 教程文档(和示例应用程序)。因此,我满足于继续使用我们已经在 Gluon 中获得的适应 DI 行为的无论是什么。它是什么?我们在哪里可以阅读更多关于它的信息以更好地控制使用它?
【问题讨论】:
【参考方案1】:JavaFX 没有规定任何 DI 框架,从技术上讲,您也不需要任何 DI 框架。但是,如果您想使用一个,您可以使用任何您想要的以及在客户端应用程序中有意义的东西。 (您实际上指的是哪个具体示例?)
【讨论】:
就像我在上面的 OP 中所说的,我们已经看到我们可以在 Gluon 移动应用程序代码中使用 Inject 注释。我们不必手动实例化对象并将它们分配给其他人,我们自己。什么 DI 系统正在为我们做这件事?如果不是 DI,你怎么称呼这种自动化行为?【参考方案2】:在他们使用http://afterburner.adam-bien.com/ 的一些示例中,我想这就是你的意思。
【讨论】:
以上是关于Gluon 默认使用啥 CDI 机制?的主要内容,如果未能解决你的问题,请参考以下文章
CDI 中的@ApplicationScoped 和@Singleton 作用域有啥区别?