暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java 插件化动态加载设计

匠工精神 2020-06-03
4405

相信很多做java开发的小伙伴们都会有动态加载class的需求,尤其是在单体应用的时候,动态加载class能够让应用不需要down机即可享受更新功能,今天设计了一个简单的插件式动态加载功能,供有兴趣的小伙伴尝试。


先看类图

设计思路:

PluginI 插件接口定义,此接口用于自定义插件功能;

PluginRepository 插件的管理类,加载类,获得类实例等功能实现;

Plugin 抽象的插件类;


接下来看下代码实现:

1. 插件接口,可自定义实现插件功能

2. 抽象的插件类

3. 插件管理类

4. 自定义插件实现

至此,代码实现已经完成,设计思路也很简单,就是通过classloader把实现PluginI的jar动态加载进来,然后调用其实现的功能;


最后我们测试下我们写的功能:

运行结果:

good~ 结果如我们所期待的。


本篇只是简单实现了插件是动态加载的功能,但跟实际的应用还有些距离,比如我们现在用的spring boot应用,怎么把它变成动态的bean加载到应用里,这才是真正需要考虑的。当然如果你对spring IOC 过程了解,实现起来也很容易,通过beanfactory去注册你的BeanDefinition,有兴趣的可以自行尝试下,也欢迎一起探讨。



文章转载自匠工精神,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论