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,声明子模块、统一依赖版本、提炼公共依赖