【发布时间】:2014-04-22 20:46:35
【问题描述】:
我正在尝试创建一个 Guice 2 模块来使用 @Provides 方法包装第三方 API。问题是我不确定如何正确绑定到 @Provides 方法。第三个库没有为其单例公开接口,所以我只是调用bind(ThirdPartySingleton.class)。
Guice 抱怨类似以下的错误:
Could not find a suitable constructor in ThirdPartySingleton1
我知道我可以为每个第三方单例使用单独的 Provider<>,但如果可能的话,我想使用简洁的 @Provide 方法。
public class ThirdPartyModule extends AbstractModule {
public ThirdPartyModule() {
}
@Override
public void configure() {
bind(ThirdPartySingleton1.class);
bind(ThirdPartySingleton2.class);
}
@Provides
@Singleton
ThirdPartySingleton1 provideThirdPartySingleton1(){
return ThirdPartySingleton1.getInstance();
}
@Provides
@Singleton
ThirdPartySingleton2 provideThirdPartySingleton2() {
ThirdPartySingleton2 singleton2 = ThirdPartySingleton2.getInstance();
singleton2 .setParam1( "param1");
singleton2 .setParam2( "param2");
return singleton2 ;
}
}
【问题讨论】:
标签: dependency-injection guice roboguice