Gin未找到@提供方法



这是我的Gin模块:

public class FooGinModule extends AbstractGinModule {
  @Override
  protected void configure() {
    ...
    bind(ActivityManager.class).asEagerSingleton();
    ...
  }
  @Provides
  @Singleton
  public ActivityManager getActivityManager(EventBus eventBus, SimplePanel display,
      ActivityMapper activityMapper) {
    final ActivityManager activityManager = new ActivityManager(activityMapper, eventBus);
    activityManager.setDisplay(display);
    return activityManager;
  }
}

当我尝试gwt编译时,我得到以下错误:

[错误]找不到类的@Inject或默认构造函数com.google.gwt.activity.shared.ActivityManager

我指定的@Provides方法是否错误?

您不需要显式绑定,事实上我认为它会覆盖@Provides方法。我不知道有什么好方法可以将asEagerSingleton()@Provides方法结合使用,而是考虑Provider<T>实现。

bind(ActivityManager.class)
    .toProvider(MyActivityManagerProvider.class)
    .asEagerSingleton();

查看您正在生成/连接的实际内容,我发现将@Inject实例ActivityManager实际SimplePanel(或用作显示的任何对象)的父对象,并在那里调用setDisplay是很有用的。至少对我来说,这使更换或更改显示器变得更容易,因为它是代码块的一部分,而不是模块的一部分。它还消除了创建热切的单例的需要。

相关内容

  • 没有找到相关文章

最新更新