@Providesメソッドを見つけないGIN
-
27-10-2019 - |
質問
これが私のジンモジュールです:
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コンパイルを試みると、次のエラーが発生します。
エラー]クラスcom.google.gwt.activity.shared.activitymanagerの@injectまたはデフォルトのコンストラクターはありません。
私は指定していますか @Provides
方法が間違っていますか?
解決
明示的なバインディングは必要ありません。実際、私はそれがオーバーライドすると思います @Provides
方法。使用する良い方法がわかりません asEagerSingleton()
とともに @Provides
方法、代わりにaを検討します Provider<T>
実装。
bind(ActivityManager.class)
.toProvider(MyActivityManagerProvider.class)
.asEagerSingleton();
あなたが生成/配線を生成している実際のものを見ると、私はそれが実際に役立つと思います @Inject
ActivityManager
の親にインスタンス SimplePanel
(またはあなたがディスプレイとして使用しているものは何でも)、そして電話 setDisplay
代わりに。少なくとも私にとっては、モジュールの一部ではなくコードのブロックの一部であるため、ディスプレイを交換したり変更しやすくなります。また、熱心なシングルトンを作成する必要性も削除します。
所属していません StackOverflow