gpt4 book ai didi

java - GWT - GIN - GWTP - 调度程序注入(inject)问题

转载 作者:行者123 更新时间:2023-11-30 07:31:17 24 4
gpt4 key购买 nike

我所处的情况可能已经有人在。我在我的应用程序中使用 GWTP。 GWTP 使用 GIN 作为客户端依赖注入(inject)。 GWTP 也使用 Dispatcher 机制向服务器端发送请求。

现在,有一些类 (PRESENTERS) 由 GWTP 注入(inject),我还有一些其他类是在运行时创建的,没有注入(inject),这意味着使用"new"键工作。让我们举个例子:

// Injected
class Dispatcher {
}

// Injected
Class A {
@Inject // I can do this and access the disp without any hurdle.
Dispatcher disp;
}

// Created using "new" keywork
class B {
//@Inject I can't do this because of B is not an injected class. Correct me if I am wrong here
Dispatcher disp;
}

所以,我需要访问非注入(inject)类中的注入(inject)类。您可能认为我没有尝试过 GWT.Create(Injector.class) 方法。我已经尝试过了,我能够在非感染类中获取该对象,但是对象 Dispatcher 是不同的,它将“/dispatch/”递增(添加)到其基本 url。这意味着我需要拥有 GWTP 内部使用的相同对象。 GWTP 在入口点创建 GIN INJECTOR。

一个解决方案是将相同的 GIN INJECTOR 放入客户端 session (静态 HashMap )并在非注入(inject)类中使用它(我也尝试过这个解决方案并且它工作得很好)。

我需要更完美的解决方案。

提前谢谢你。

最佳答案

注入(inject)就像一种(好的)病毒,一旦您开始使用它,它就会在您的源代码中传播。

如您所说,您不能在使用关键字“new”创建的对象中注入(inject)实例。我可以想到一些快速、肮脏且不推荐的替代方案:

  • 当您创建注入(inject)器时(通过 GWT.create(MyInjector.class)),将其分配给一个公共(public)静态变量。 MyInjector 应该有一个返回 DispatchergetDispatcher() 方法。这是一个非常肮脏的替代方案,我不会推荐它,因为使用它的每个组件都将很难测试。
  • 谁创建了 B 的实例?遍历层次结构,直到找到使用注入(inject)创建的对象,然后注入(inject) Dispatcher 并将其一直向下传递给 B 的创建者。

现在,我真正建议的是审查您的设计。通常,您应该为每个类注入(inject)业务逻辑。如果您要传递 Dispatcher,我想 B 会执行一段业务逻辑,因此它应该被注入(inject)。 p>

关于java - GWT - GIN - GWTP - 调度程序注入(inject)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com