我想问一下
之间有什么区别bindConstant().annotatedWith(Names.named("keepAliveInterval")).to(60);
和
bind(Integer.TYPE).annotatedWith(Names.named("keepAliveInterval")).toInstance(60);
我想用Names.bindProperties(binder(),prop)加载我的所有配置属性;在我的模块中,我发现它使用后者来绑定属性。
谢谢,问候
马立克
答案 0 :(得分:10)
我认为使用bindConstant()
的理由是:
bindConstant().to(foo)
。由于与它绑定的类型是基元和String
s,因此无注释绑定对它们中的任何一个都没有意义。bindConstant()
将int
绑定到Integer.class
而不是Integer.TYPE
,不确定如果那很重要。)我认为Names.bindProperties
不使用bindConstant
只是因为它是内部代码,而在编写绑定过程中可以跳过一两步就可以了。在你自己的模块中,我只使用bindConstant
,因为它很简单,更清晰。
答案 1 :(得分:3)
bindConstant()
实例, TypeConverter
的好处是能够设置不同的原语。
以下面的绑定定义为例:
bindContant().annotatedWith(@Names.named("c")).to("30");
然后在你想要注射的课程中:
@Inject @Named("c") int value;
Guice会将绑定的String
转换为int
。如果不能,就会这样说。
bindConstant()
的好处是可能发生的类型转换。明确约束int
不会给你带来奢侈。