Java实现插件式开发
在做数据源管理的时候有一个业务场景,需要根据前端的传参来调取不同的数据源驱动进行数据查询,传统的写法就是直接把所有支持的数据源都实现,然后用工厂模式调用不同的实现类。这样实现当然也没有什么问题,但当带入业务场景之后就会发现会有很多冗余,且会让服务变得厚重。
比如说如下场景:
当你已经实现了:MySQL、Doris、Oracle、PG、Hive、SqlServer、Kafka、Redis、ES、CK…
此时某个客户的环境只涉及MySQL和Doris的时候,就不需要把所有的代码都部署上去。此时就要用到插件式开发的概念了。
实现思路:
1、业务流程及设计思路
关系类图:
2、模块架构
3、数据源支撑-引入
新增模块实现对应数据源的接口,将支持的plugin上传到指定的文件夹下,通过重启服务或下次调用时自动扫描加载更新。
代码的具体实现我单独用一篇文章来写: Spring Boot 热加载jar实现动态插件