Skip to content

spring插件化项目支持灵活扩展/不停机更新发版

插件化项目树形结构

spring-plugin-project/                          # 父工程(统一管理依赖版本、打包配置)
├── pom.xml                                     # 父pom,声明子模块、统一依赖版本

├── plugin-api/                                 # 【插件接口层】定义标准接口和事件(主程序与插件的通信)

├── plugin-core/                                # 【主程序核心】负责插件加载、生命周期管理、基础服务

├── plugins/                                    # 【插件集合】所有业务插件(可独立开发、单独打包)
│   ├── plugin-user/                            # 示例:用户相关插件(如登录、权限)
│   │
│   ├── plugin-order/                           # 示例:订单相关插件(如下单、支付)
│   │
│   └── pom.xml                                 # 插件集合父pom(统一插件打包配置,如打成jar/zip)

├── deploy/                                     # 【部署支撑层】热部署、插件仓库相关
│   ├── plugin-repo/                            # 本地插件仓库(存放已打包的插件jar,主程序从这里扫描)
│   │   ├── plugin-user-1.0.0.jar
│   │   └── plugin-order-1.0.0.jar
│   ├── hot-deploy-script/                      # 热部署脚本(如检测插件更新、触发主程序加载新插件)
│   │   └── check-update.sh
│   └── pom.xml                                 # 部署工具依赖(如文件监控、远程传输工具)

重构后的主要结构

├── justgotrip-Ui -- 前端项目
└── justgotrip-common -- 系统共享模块
     ├── justgotrip-common-parent -- 全局依赖管理控制(只保留一个主pom文件)
     ├── justgotrip-common-framework -- 基础框架核心包(原始justgotrip-framework)
     ├── justgotrip-common-datasource -- 动态数据源包(原始justgotrip-datasource-common)
     ├── justgotrip-common-mybatis -- mybatis 扩展封装(预留)
     ├── justgotrip-common-seata -- 分布式事务(预留)
     ├── justgotrip-common-swagger -- 接口文档
     └── justgotrip-common-oss -- 阿里云 oss 扩展封装
├── justgotrip-gateway -- 网关模块[只做流量分发,剔除无关代码]
├── justgotrip-admin -- 用户模块
├── justgotrip-direct -- 直连模块
├── justgotrip-order -- 订单模块
。。。一一对应

单个业务模块的目录结构

justgotrip-order/                               # order服务,唯一git地址,实现按需分配权限

├── order-api/                                  # 客户端调用的api(原->API服务,直接复制代码)
│   ├── src/main/java/com/xxx/order/api/
│   │              
│   └── pom.xml               

├── order-impl/                                 # 服务端支持(原->impl服务,直接复制代码)
│   ├── src/main/java/com/xxx/order/provider/
│   │
│   ├── src/main/resources/
│   └── pom.xml    

├── pom.xml                                     # 父pom,声明子模块、统一依赖版本、提炼公共依赖

Released under the MIT License.