我刚认识盖斯,我不太明白
1)非目标绑定--我什么时候需要使用它?
bind(Logger.class);2)‘toInstance()’bind --如何使具有ctor的对象具有依赖关系?或者它是否适用于没有依赖项的数据对象?
bind(Logger.class).toInstance(new Logger(..?..));3)不写任何约束。
@Override
protected void configure() {
}当我运行时,上面的任何一处发生了什么?
我什么时候应该选择他们中的任何一个?
发布于 2014-12-19 05:02:52
bind(Untargetted.class).in(Scopes.SINGLETON);)PrivateModule中。
toInstance()。对于非Guicey对象,比如必须用new创建的数据对象或库类,它更有用。Module中的类型时,Guice会为它创建一个即时绑定。这种行为几乎与bind(Untargetted.class);完全相同非目标绑定和toInstance()绑定的主要区别在于,toInstance()绑定将是单个绑定(“显然”--只有一个实例!),但是与大多数其他绑定一样,非目标绑定默认没有作用域。因此,如果不同的类注入一个Untargetted,它们将得到不同的实例,除非您在其上设置一个作用域。
另一个不同之处是,当您不使用toInstance()时,Guice会为您创建实例,从而启用像面向方面的编程这样的功能。
通常,除非有必要,否则您应该不使用toInstance()绑定。非目标绑定具有更显式的优点,但是列出所有绑定都是冗长的,因此经常使用即时绑定。特别是在这种情况下:
bind(Interface.class)
.to(Implementation.class);
// Technically, Guice creates a just-in-time binding for Implementation herehttps://stackoverflow.com/questions/27540204
复制相似问题