之间有什么区别
bind(FooImpl.class).in(Scopes.SINGLETON);
bind(Foo.class).to(FooImpl.class);
和
bind(Foo.class).to(FooImpl.class).in(Scopes.SINGLETON);
使用Google Guice?
修改
第二个声明在我正在处理的项目中在Singleton上创建两个实例。 Reference here
答案 0 :(得分:3)
在reference到Google Guice文档中:
在链接绑定中,范围适用于绑定源,而不是 绑定目标。假设我们有一个实现两者的Applebees类 酒吧和烧烤界面。这些绑定允许两个实例 那个类型,一个用于Bars,另一个用于Grills:
bind(Bar.class).to(Applebees.class).in(Singleton.class);
bind(Grill.class).to(Applebees.class).in(Singleton.class);
这是因为范围适用于绑定类型(Bar,Grill),而不是 满足该绑定的类型(Applebees)。只允许一个 要创建的单个实例,使用
@Singleton
注释 该类的声明。或者添加另一个绑定:
bind(Applebees.class).in(Singleton.class);
因此,第二种方式可能有FooImpl
的两个实例,但第一种方式不是第一种方式。
答案 1 :(得分:0)
没有区别。两者都会将Foo
绑定到FooImpl
范围内SINGLETON
的实例。