gpt4 book ai didi

gwt - Gin 找不到@Provides 方法

转载 作者:行者123 更新时间:2023-12-04 05:57:23 27 4
gpt4 key购买 nike

这是我的 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 时,我收到以下错误:

[ERROR] No @Inject or default constructor found for class com.google.gwt.activity.shared.ActivityManager



我是否指定 @Provides方法不对?

最佳答案

您不需要显式绑定(bind),实际上我认为它会覆盖 @Provides方法。我不知道使用asEagerSingleton() 的好方法与 @Provides方法,而是考虑 Provider<T>执行。

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

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

关于gwt - Gin 找不到@Provides 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com