绑定生成了gin中的类

  • 本文关键字:gin 绑定 java gwt gwt-gin
  • 更新时间 :
  • 英文 :


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

bind(MyDynamicallyGeneratedHandler.class).asEagerSingleton();

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

有什么方法可以配置动态生成的GIN模块吗?或者,是否有任何方法可以实例化动态生成的处理程序,以便进行setter注入(从而进行事件总线注册)?

以下是示例代码片段:

// 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注入的方式实例化这些处理程序(例如,我不能手动注入依赖项)。

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

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

相关内容

  • 没有找到相关文章

最新更新