java - 使用 GIN 在 GWT 中注入(inject)入口点类

标签 java gwt dependency-injection gwt-gin

我试过这样做:

@Singleton
public class AAA implements EntryPoint, HistoryListener
{

private BBB bbb;
private CCC ccc;
private DDD ddd;
private EEE eee;

@Inject
public AAA(BBB bbb, CCC ccc, DDD ddd, EEE eee)
{
  this.bbb = bbb;
  this.ccc = ccc;
  this.ddd = ddd;
  this.eee = ee;
}
.........
}

结果对所有实例都是空的.. 我希望这种方式可以工作...

例如我知道我可以做这样的事情

private final MyGinjector injector = GWT.create(MyGinjector.class);

injector.getAAA()
and so on..

为什么我试过的第一种方法对我不起作用? 有什么建议吗?

谢谢

最佳答案

您可以使用 Guice 的 injectMembers 功能,这在 GIN 中是通过在您的 Ginjector 中声明一个采用单个参数的方法来完成的。

@GinModules(...)
interface MyGinjector extends Ginjector {

   public void injectEntryPoint(AAA entryPoint);

   ...
}

public class AAA implements EntryPoint {
   @Inject private BBB bbb; // field injection works
   private CCC ccc;

   @Inject void setCcc(CCC ccc) { this.ccc = ccc; } // and of course method injection

   public onModuleLoad() {
      MyGinjector injector = GWT.create(MyGinjector.class);
      injector.injectEntryPoint(this);
      ...
   }
}

顺便说一句,您不需要使用 @Singleton 注释您的 EntryPoint:除非您将它注入(inject)另一个类(并且您必须诉诸黑客将其绑定(bind)到由创建的实例GWT,而不是让 GIN 创建自己的),您的应用程序中将只有一个 EntryPoint 实例。

关于java - 使用 GIN 在 GWT 中注入(inject)入口点类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495303/

相关文章:

Java 附加 API

GWT:将客户端错误/堆栈跟踪发送到服务器?

grails - 依赖注入(inject)在 Grails 服务中不起作用

spring - MessageSource 没有被 Spring 注入(inject)

java - maven项目中socks服务器的回复格式错误

java - Amazon SES - Java 中的 Lambda 函数

java - JFace:更改 TreeViewer 中 TreeItem 的颜色

javascript - GWT 应用程序未在 IE 中显示

java - GWT Celltable 固定列

javascript - Angularjs 缩小使用 grunt uglify 导致 js 错误