在 guice 中,@provides 和 bind() 之间有区别吗?
2022-09-02 21:50:20
我想知道在方法上使用@provides
和在我的guice模块中使用bind()
有什么区别。
我通常会覆盖 AbstractModule.configure() 并将我的所有实现绑定到我的接口,如下所示:
public class MyModule extends AbstractModule
{
@Override
protected void configure()
{
this.bind(myIface.class).to(myIfaceImpl.class);
this.bind(myOtherIface.class).to(myOtherIfaceImpl.class).asEagerSingleton();
}
...
}
但是,我注意到我目前正在使用的代码库中的一种模式,其中实现未显式绑定,而是从提供程序返回,如下所示:
public class MyModule extends AbstractModule
{
@Provides
@Singleton
myIface iFaceProvider()
{
return new myIfaceImpl();
}
...
}
有没有理由更喜欢其中一个?是否存在强制使用特定方法的情况?