根据属性(外部文本文件中的字符串)/在运行时更改绑定



如何通过属性/文本文件中给定的属性/字符串更改/设置绑定?在我的例子中,我想实现一种"演示模式"。在正常模式下,属性将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

最新更新