后端源码分析
本章节面向基于 MDP 进行二次开发的程序员,对后端四个基础工程做模块级源码解读,重点回答五个问题:
- 每个模块是干什么的(源码解读)
- 想改功能应该动哪里(扩展点、功能扩展建议)
- 哪些行为不用改代码、改配置就行(可配置参数)
- 二次开发注意事项
1. 四大工程定位
| 工程 | Maven 坐标 | 定位 | 文档 |
|---|---|---|---|
| mdp-parent | top.mddata.base:mdp-parent | 全平台第三方依赖版本基线(BOM)+ checkstyle/flatten 构建规范 | mdp-parent |
| mdp-base | top.mddata.base:* | 技术框架层:24 个与业务无关的模块(核心模型、数据库、缓存、日志、SSO 定制等),可被任何项目复用 | mdp-base/ |
| mdp-sdk | top.mddata.sdk:* | 交付给第三方的独立 SDK,封装开放接口调用(签名、加解密、HTTP) | mdp-sdk/ |
| md-public | top.mddata.apps:md-* | 业务公共层:平台自身的公共实体、Mapper、装配、缓存 key、枚举扫描,被各业务服务依赖 | md-public/ |
2. 整体依赖关系
mdp-sdk 的独立性
mdp-sdk 严禁依赖 mdp-base / md-public 的任何模块,它有自己的一套 Result/Page 模型和硬编码的轻量依赖(okhttp + fastjson2)。阅读时不要把 SDK 的 top.mddata.sdk.core.common.Result 和服务端的 top.mddata.base.model.R 混为一谈。
3. 三个必须知道的全局约定
- 配置前缀根是
mdp.:定义于md-core的Constants.PROJECT_PREFIX(top/mddata/base/constant/Constants.java),所有 starter 的配置项形如mdp.cache.*、mdp.log.*。 - 版本号统一走
${revision}:由 flatten-maven-plugin 处理,外部项目 importmd-bom后无需写版本号。 - 部分抽象配置类要求应用层继承才生效:
BaseConfig、AbstractGlobalExceptionHandler(md-boot)、DbConfiguration(md-db)、MyMybatisFlexConfiguration(md-db-mybatis-flex)。
4. 阅读指引
| 你想做什么 | 建议阅读 |
|---|---|
| 搭建一个新服务,开发新业务 | md-mvc-flex(三层基类)→ md-public → md-common-config(装配层) |
| 新增/调整缓存 | md-cache-starter → md-cache-key |
| 接入单点登录、改造认证流程 | md-sa-token(定制副本,升级有坑) |
| 对接开放平台 | mdp-sdk 总览 → mdp-simple-sdk |
| 开放平台服务端扩展(@Open 接口) | md-sop-support |
| ORM相关、增加数据权限、审计字段 | md-db-mybatis-flex → md-common-dao |
| 字典翻译、名称回显 | md-echo-starter |
| 操作日志落库 | md-log-starter(DB 模式需自行监听事件) |
| 新增枚举下拉 | md-enumeration-scanning |
| 生成前后端 CRUD 代码 | md-codegen |
| 升级 Spring Boot / 三方依赖 | mdp-parent(版本都在这里仲裁) |