我一直忙着处理未来并将旧的Eclipse 3.7应用程序迁移到Eclipse 4,虽然我对移植所有视图的应用程序模型感到满意但我有许多源代码提供程序我不确定移植明智。我一直在使用Eclipse 4上的一些教程,包括this Tutorial from good old Lars,但似乎都没有涵盖这个特定的元素。
对于少量Context,我现有的应用程序有一些类扩展 AbstractSourceProvider ,这些类在 org.eclipse.ui.services 扩展点中注册。我的视图使用工作台中的ISourceProviderService.getSourceProvider(key)
函数将自己注册为这些服务的侦听器,并在该源触发源更改事件时自行更新。我也有一些供应商也相互引用了一些,所以我想知道这是否仍然适用于注射。
Eclipse 4中使用了哪种模型?我应该使用相同的旧扩展点吗?这些扩展点服务能否以新的酷的anotationy方式注入视图?
是什么给出了?
答案 0 :(得分:1)
您可以通过多种方式创建服务:
创建服务类的实例并将其放在IEclipseContext
中。这通常在“插件”中完成:
public class MyAddon
{
@PostConstruct
void postConstruct(IEclipseContext context)
{
MyService myService = ContextInjectionFactory.make(MyService.class, context);
context.put(MyService.class, myService);
}
}
' Addon'在application.e4xmi文件中声明。
您也可以在RCP的LifeCycle课程中创建这样的服务。
OSGi service将自动添加到Eclipse上下文中。
您可以使用使用OSGi服务的Context Function,但在需要之前不会创建实际服务。
在所有情况下,您都可以通过注射引用服务:
@Inject
MyService myService;
请注意,仅对Eclipse中从application.e4xmi中描述的对象创建的对象执行注入。可以使用ContextInjectionFactory
对其他对象进行注入。