如何通过属性/文本文件中给定的属性/字符串更改/设置绑定?在我的例子中,我想实现一种"演示模式"。在正常模式下,属性将url提供给外部服务,但如果url是"demo",则相应接口的绑定应该这样更改:
正常:bind(SasDatenProvider.class).to(SasDataProviderHttpImpl.class);
演示bind(SasDataProvider.class).to(SasDataProviderFileImpl.class);
如何实现?提前致谢
您可以在模块中使用带有@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;
}
}
你可以在指南文档中阅读更多关于@Provides
-methods的信息:http://code.google.com/p/google-guice/wiki/ProvidesMethods
如果你不想在你的模块中使用这种逻辑,你可以考虑创建你自己的provider:http://code.google.com/p/google-guice/wiki/ProviderBindings