如何通过属性/文本文件中给出的属性/字符串更改/设置绑定?在我的情况下,我想实现一种“演示模式”。 在正常模式下,属性为外部服务提供URL,但如果url为“demo”,则应更改相应接口的绑定,如下所示:
正常:
bind(SasDatenProvider.class).to(SasDataProviderHttpImpl.class);
演示
bind(SasDataProvider.class).to(SasDataProviderFileImpl.class);
如何实现? thx提前
答案 0 :(得分:2)
您可以在模块中使用带@Provides
注释的方法。然后你可以做这样的事情:
public class MyModule extends AbstractModule {
@Provides
SasDatenProvider provideSas(SasDataProviderHttpImpl http,
SasDataProviderFileImpl file){
boolean isDemo = false; /* do you property lookup logic here */
return isDemo ? file : http;
}
}
您可以在guice文档中详细了解@Provides
- 方法:
http://code.google.com/p/google-guice/wiki/ProvidesMethods
如果你不想在你的模块中使用这种逻辑,你可以考虑创建自己的提供者: http://code.google.com/p/google-guice/wiki/ProviderBindings