自动注册插件的实现

1 需求

一、有一些核心逻辑是实现了某些event的,但没有属于某个组件,导致他无法被注册到bundle中。

二、因此需要一个机制将标识为要自动注册的plugin自动注册进bundle中

2 开发思路

实现一个annotation(注解):AutoRegister

此注解可以指定bundle,一个插件的代码看起来是这样的子:

@AutoRegister(bundle=GoodsPluginBunlde.Class)

ClassSomePluginimplementsIPlugin{

}

指定自动注册的同时,指定其bundle

然后我们在组件加载器中去获取有这个注解的插件,把他注册到相应的bundle中

3 类图

3.1 bundle

3.2 plugin

3.3 插件加载

4 调用时序图

点击查看大图

5 技术点

5.1注解的获取

AutoRegisterxxxAnnotion=

object.getClass().getAnnotation(AutoRegister.Class)

不为空表示此类标记了此注解

xxxAnnotion.bundle()得到bundle的class

通过

SpringContextHolder.getBean(类型)来获取bundlebean,然后调用注册插件方法把插件注册

results matching ""

    No results matching ""