说明:文中涉及到的内容比较浅显,熟悉的同志可以闪过了^_^
扩展点(Extension Point)和扩展(Extension)这两个概念,每个插件开发人员应该再熟悉不过了,前者规定了契约,后者按照契约实现并注册扩展。我们在使用扩展之前必然有个过程就是加载扩展,如果我们在定义扩展点的时候有java类型的属性,那么这个加载扩展的过程就伴随着类加载。下面我们来分析一下这个过程。
假设我们定义了如下一个扩展点,元素中有一个class属性,要求父类型为java.lang.Object(够灵活^_^)
【扩展加载过程分析】
我们在加载这个扩展的时候,核心操作就是加载class属性指定类型,这就涉及到了类加载。如果扩展所在的插件还没有被启动,则在类加载之前必须要完成的一个操作就是:启动该提供扩展的插件。有关这个问题的分析,可以参见博客的另外一篇文章:
【Eclipse插件开发】Eclipse插件Lazy Start实现原理分析
我们一般的扩展加载代码如下:
待续。。。
几个关键点:扩展注册表的访问耗时、类加载引起的插件启动
解决方案:引入中间角色
待续。。。
本博客中的所有文章、随笔除了标题中含有引用或者转载字样的,其他均为原创。转载请注明出处,谢谢!