谷歌GIN模块&;GWT.Create()

谷歌GIN模块&;GWT.Create(),gwt,dependency-injection,guice,Gwt,Dependency Injection,Guice,我有一个扩展AbstractGinModule的类 如: public class ClientModule extends AbstractGinModule { public ClientModule() { } @Override protected void configure() { ... ... bind(...class).annotatedWith(...).to(...class).in(Singleton.class); ...

我有一个扩展AbstractGinModule的类

如:

 public class ClientModule extends AbstractGinModule {

  public ClientModule() { }

 @Override   
  protected void configure() {
  ...
  ...   
  bind(...class).annotatedWith(...).to(...class).in(Singleton.class);
  ...
  }
 }
我的想法是基于存储在属性文件中的值将一个类与另一个类绑定

如:

 public class ClientModule extends AbstractGinModule {

  public ClientModule() { }

 @Override   
  protected void configure() {
  ...
  ...   
  bind(...class).annotatedWith(...).to(...class).in(Singleton.class);
  ...
  }
 }
param包含来自属性文件的值

if(param.equals("instanceB"))
   bind(a.class).to(b.class)
else
   bind(a.class).to(c.class)
我有一个类访问这个属性文件并返回一个带值的字符串。 这个类称为:InstanceParameters.java

我想在我的ClientModule中获得这个类的一个实例。 但我找不到任何办法。 我试过:

- InstanceParameters param = new InstanceParameters ();
- GWT.create(InstanceParameters.class); (Error because this method should only be used on the client side)
是否有方法访问此clientModule中的InstanceParameters类


感谢您的帮助

在启动应用程序之前,您无需阅读该文件-就在创建
AbstractGinModule
之前(通过
GWT.create
)。因此,在您的
onModuleLoad
方法中加载
Dictionary
,并通过提供者或任何其他方式将参数作为一个整体
InstanceParameters
类或作为提取的字符串传递,但我猜您正在使用其中的一些Java类从HDD读取文件——GWT的JRE子集不支持这种情况。通过属性文件“控制”编译,您到底想要实现什么?为什么不能从Java类(例如,通过注释)执行此操作?instanceParameters类使用字典对象“com.google.gwt.i18n.client.Dictionary”。在InstanceParameters的构造函数中,我通过“this.parameters=dictionary.getDictionary(“NameOfFile”);”实例化字典。这是我用来从文件“return parameters.get(“applicationTitleShort”);”中获取值的方法。正常情况下应该可以。我只是尝试创建一个带有一个属性的简单类。(关联的getter和setter)。我可以在ClientModule中实例化这个。我不明白…我只是想根据属性更改为可视组件。此属性不是一个简单的值,它允许我了解应用程序以何种模式启动。像富模式和简单模式(客户端的组件较少)谢谢您的回答。我不确定我是否正确理解了您的答案,但我做了以下操作:在onloadModule()中,我接收字典,我获取来自.property文件的值。我在这个加载模块中进行测试。根据值,我使用一个或另一个模块。你认为这是正确的吗?是的,这是正确的-我建议将“测试”部分放在模块本身中,但是当配置(即模块扩展
AbstractGinModule
)变得更复杂时,你的工作会更好(另一方面,你必须更新两个Gin模块…)我似乎记不起atm,但我很确定有一种方法可以将值传递给Gin(在最坏的情况下,在GWT模块中使用
public final static
字段,呃)。完美。与此同时。我就这样离开。我将进行调查,以便在晚些时候将该值传递给GIN。非常感谢;-)