自动注册插件的实现
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,然后调用注册插件方法把插件注册