Java 运行时按属性(外部文本文件中的字符串)/更改GUI绑定

Java 运行时按属性(外部文本文件中的字符串)/更改GUI绑定,java,guice,Java,Guice,如何通过属性/文本文件中给定的属性/字符串更改/设置绑定?在我的例子中,我想实现一种“演示模式”。 在正常模式下,属性为外部服务提供url,但如果url为“demo”,则相应接口的绑定应按如下方式更改: public class MyModule extends AbstractModule { @Provides SasDatenProvider provideSas(SasDataProviderHttpImpl http, SasDataProvider

如何通过属性/文本文件中给定的属性/字符串更改/设置绑定?在我的例子中,我想实现一种“演示模式”。 在正常模式下,属性为外部服务提供url,但如果url为“demo”,则相应接口的绑定应按如下方式更改:

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;
    }
}
正常:

bind(SasDatenProvider.class).to(SasDataProviderHttpImpl.class);
演示

如何做到这一点?
thx预先

您可以在模块中使用带
@注释的方法提供
。然后你可以这样做:

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文档中阅读有关
@提供的
-方法的更多信息:

如果你不想在你的模块中使用这种逻辑,你可以考虑创建你自己的提供者:


属性值是在运行时更改还是只设置一次?我们正在讨论的是gwt应用程序。因此,在部署之前(在编译和运行时之间;-)更改属性。它用于初始化/实例化一些东西。目前我的解决方案是:正常的实现注入了demo实现,如果设置了“demo”属性,就使用它-我对此感觉不太舒服。thx!我已经在使用@Provides了。是否可以在提供方法中注入依赖项?我需要一个“serverConfig”。是的,您可以将依赖项添加到@Provides方法签名中