有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Eclipse RCP如何在使用@Inject时使用本地上下文解决依赖关系

我正在开发一个使用EclipseRCP3开发的应用程序,现在我们正在尝试向我们的客户机代码中添加依赖注入(所以..一些EclipseRCP4特性)

我们设法用我们需要的服务填充上下文的顶层,这些服务必须存在于整个应用程序中(我假设这就是所谓的应用程序上下文)

由于我们的应用程序可以有多个视图(即使是同一类型的视图),因此我们需要使用一些本地上下文(…一些范围机制)。在这个本地上下文中,我们打算包含视图实例的公共实例,并且与其父上下文(包含服务的应用程序上下文)类似。。。因此,基本上我们设法获得了这个层次结构

让我们加入一些代码:)

@Inject  //Constructor
public MyViewPart(final IEclipseContext parentContext) {
  localContext.setParent(parentContext);

  myModel = ContextInjectionFactory.make(MyModel.class, localContext);
  localContext.set(MyModel.class, myModel);

  classThatNeedAModel = ContextInjectionFactory.make(ClassThatNeedAModel.class, localContext);


  localContext.activateBranch();
  // we have a mechanism that activated the localContext based on the active 
  // part, that works as expected, so I just activate the localContext here.
}

创建这样一个实例,就像一个符咒,需要模型的类将模型注入其中

但是,我们需要一种避免使用所有这些调用的方法

make

方法。。。相反,我们想要这样的东西:

@Inject
public void set(final ClassThatNeedAModel classThatNeedAModel) {
  this.classThatNeedAModel = classThatNeedAModel;
}

因此,在构造函数中,我可以初始化localContext并激活它,从那时起,我希望框架以某种方式使用活动的localContext,而不是应用程序上下文(它只包含服务,而不包含我的模型,因为这将导致注入null)

有没有办法做到这一点?我们是否可以控制使用哪个上下文来解决注入所需的依赖关系

谢谢


共 (0) 个答案