java - 在 gin 中绑定(bind)生成的类

标签 java gwt gwt-gin

我正在尝试动态生成一些事件处理程序集(使用 com.google.gwt.core.ext.Generator 子类)。整个生成过程工作正常,我生成的处理程序通过 setter 注入(inject)(@Inject 注释)接受 EventBus,整个想法是这些自动生成的处理程序在引擎盖下的(注入(inject)的)EventBus 中注册自己。问题是所有这些处理程序都必须以某种方式实例化。在将它们绑定(bind)到 GIN 模块之前,GIN 对它们一无所知;如下所示:

bind(MyDynamicallyGeneratedHandler.class).asEagerSingleton();

此代码的问题是我还必须生成 gin 模块(它将包含所有 bind(...) 指令)。它运行良好,但我无法将生成的模块(@Inject it)安装到另一个未生成的模块中,以便执行其绑定(bind)指令(作为安装(MyDynamicModule.class)的结果)。我尝试了静态注入(inject)和提供程序的肮脏技巧 - 都没有成功。

有没有办法配置动态生成的 GIN 模块?或者也许有什么方法可以实例化动态生成的处理程序,以便发生 setter 注入(inject)(以及事件总线注册)?

这是示例代码片段:

// it is standard interface
public interace DynamicHandler {
  @Inject
  void setEventBus(EventBus eventBus);
}

// one of dynamically generated handlers
// where (how) to instantiate me?
public class MyHandler implements DynamicHandler {

  @Inject
  AnotherHandlerSpecificComponent component    

  void setEventBus(EventBus eventBus) {
    eventBus.register(...); // register myself
  }
}

需要注意的重要一点是,所有这些动态生成的处理程序都有一些其他依赖项 @Injected(除了 EventBus)。这些依赖项(它们的类型)是特定于处理程序的(上例中的 AnotherHandlerSpecificComponent)。所以我需要做的是以触发 GIN 注入(inject)的方式实例化这些处理程序(例如,我不能手动注入(inject)依赖项)。

提前感谢您提供任何线索。我完全被困住了......

最佳答案

如何在工厂中注入(inject)处理程序的依赖项并尝试实例化和注册实际的处理程序(例如,通过反射或扫描文件系统?)

关于java - 在 gin 中绑定(bind)生成的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990617/

相关文章:

java - PrintWriter 不发送我的字符串 (TCP/IP)

java - 为什么 JUnit 从 Eclipse 启动需要这么长时间?

java - 使用适当的缩进格式格式化JSON数据

html - GWT 包装表格并以编程方式操作内容

postgresql - 我怎样才能检测到 Gin 和要点

java - 为什么 void 方法在模拟对象上得到 NullPointerException?

java - GWT id 元素在 selenium 中每次都在变化

java - 如何使用 gwt 打开 .exe 文件?

google-app-engine - GWT+UIBinder+Gin+Guice+JDO+GAE实例

java - GWT.create(Class<?>) 与 GIN?