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) 个答案