这是我的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-compile时,我收到以下错误:
[错误]没有为类找到@Inject或默认构造函数 com.google.gwt.activity.shared.ActivityManager
我是否指定@Provides
方法错误?
答案 0 :(得分:3)
您不需要显式绑定,实际上我认为它会覆盖@Provides
方法。我不知道使用asEagerSingleton()
方法使用@Provides
的好方法,而是考虑Provider<T>
实现。
bind(ActivityManager.class)
.toProvider(MyActivityManagerProvider.class)
.asEagerSingleton();
查看您正在生成/接线的实际内容,我发现实际@Inject
ActivityManager
实例对SimplePanel
的父级(或者您正在使用的任何内容)很有用显示),并在那里调用setDisplay
。至少对我而言,这使得更换显示器或更改显示更容易,因为它是代码块的一部分而不是模块的一部分。它还消除了创建热切单身人士的需要。