首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT - GIN - GWTP -调度注入问题

GWT - GIN - GWTP -调度注入问题
EN

Stack Overflow用户
提问于 2011-09-13 22:47:01
回答 1查看 1.3K关注 0票数 2

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

现在,有一些类(PRESENTERS)是由GWTP注入的,我还有一些其他类是在没有注入的情况下创建的,这意味着使用“新的”关键字。让我们举个例子:

代码语言:javascript
复制
// 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;
}

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

一种解决方案是将相同的GIN注入器放到客户端会话(静态Hashmap)中,并在非注入类中使用它(我也尝试过这种解决方案,它的效果很好)。

我需要更完美的解决方案,可以工作。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-14 08:08:12

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

正如您所说,您不能在使用关键字'new‘创建的对象中注入实例。我能想到几个快速的、肮脏的、不推荐使用的替代

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

的创建者

现在,我真正推荐的是审查你的设计。通常,您应该向每个类注入业务逻辑。如果您正在传递一个Dispatcher,我认为B将执行一段业务逻辑,因此它应该被注入。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7403811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档