You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
4.2 KiB
95 lines
4.2 KiB
|
1 week ago
|
# 后端 - SpringBlade(Spring Boot + Cloud)
|
||
|
|
|
||
|
|
**技术栈:** Spring Boot 2.2.13, Spring Cloud Hoxton.SR11, MyBatis-Plus, Flowable 6.4.2, XXL-Job
|
||
|
|
**Java:** 1.8 | **构建:** Maven 3.8+ | **注册中心:** Nacos | **部署:** Docker(Harbor: 192.168.0.106)
|
||
|
|
|
||
|
|
## 目录结构
|
||
|
|
|
||
|
|
```
|
||
|
|
project_husbandry_back/
|
||
|
|
├── lab-auth/ # 认证授权(OAuth2/JWT)
|
||
|
|
├── lab-common/ # 公共模块(Redis 缓存、配置、常量、工具类、启动类)
|
||
|
|
├── lab-gateway/ # Spring Cloud Gateway(路由、过滤器)
|
||
|
|
├── lab-ops/ # 运维模块(11 个子模块)
|
||
|
|
│ ├── lab-admin/ # 管理后台
|
||
|
|
│ ├── lab-develop/ # 开发工具/代码生成器
|
||
|
|
│ ├── lab-log/ # 审计日志
|
||
|
|
│ ├── lab-mail/ # 邮件服务
|
||
|
|
│ ├── lab-office/ # Office 文档处理
|
||
|
|
│ ├── lab-report/ # 报表引擎
|
||
|
|
│ ├── lab-resource/ # 文件/OSS 资源管理
|
||
|
|
│ ├── lab-swagger/ # Swagger API 文档聚合
|
||
|
|
│ ├── lab-turbine/ # Hystrix 监控面板
|
||
|
|
│ ├── lab-xxljob/ # XXL-Job 分布式任务执行器
|
||
|
|
│ └── lab-xxljob-admin/ # XXL-Job 管理后台
|
||
|
|
├── lab-ops-api/ # 运维模块 Feign 客户端接口
|
||
|
|
├── lab-plugin/lab-workflow/ # Flowable 工作流引擎
|
||
|
|
├── lab-service/ # 业务服务模块
|
||
|
|
│ ├── lab-capital/ # 资金/财务
|
||
|
|
│ ├── lab-desk/ # 工作台/通知
|
||
|
|
│ ├── lab-file/ # 文件管理
|
||
|
|
│ ├── lab-iot/ # IoT 集成(已注释,未启用)
|
||
|
|
│ ├── lab-lims/ # LIMS 核心模块(最大模块,250+ Java 文件)
|
||
|
|
│ ├── lab-monitor/ # 监控
|
||
|
|
│ ├── lab-repair/ # 维修管理
|
||
|
|
│ ├── lab-system/ # 系统设置
|
||
|
|
│ └── lab-user/ # 用户管理
|
||
|
|
├── lab-service-api/ # 业务服务 Feign 客户端接口
|
||
|
|
└── script/ # Docker Compose、SQL 迁移脚本、fatjar 脚本
|
||
|
|
```
|
||
|
|
|
||
|
|
## 分层模式(每个模块)
|
||
|
|
|
||
|
|
`controller/` → `service/`(接口)→ `service/impl/` → `mapper/`(MyBatis-Plus)
|
||
|
|
额外包: `entity/`, `vo/`, `dto/`, `wrapper/`, `feign/`, `excel/`, `utils/`
|
||
|
|
|
||
|
|
## 快速定位
|
||
|
|
|
||
|
|
| 任务 | 路径模式 |
|
||
|
|
|------|---------|
|
||
|
|
| REST 控制器 | `lab-service/*/src/.../controller/*Controller.java` |
|
||
|
|
| 业务逻辑 | `lab-service/*/src/.../service/impl/*ServiceImpl.java` |
|
||
|
|
| 数据库 Mapper | `lab-service/*/src/.../mapper/*Mapper.java` |
|
||
|
|
| 实体类 | `lab-service/*/src/.../entity/*.java` / `lab-service-api/*/src/.../entity/*.java` |
|
||
|
|
| Feign 客户端 | `lab-service-api/*/src/.../feign/*Client.java` |
|
||
|
|
| 视图对象 | `lab-service-api/*/src/.../vo/*VO.java` |
|
||
|
|
| Excel 导出 | `lab-service/*/src/.../excel/*.java` |
|
||
|
|
|
||
|
|
## 约定规范
|
||
|
|
|
||
|
|
- **包结构**: `org.springblade.{模块}.{领域}` — 如 `org.springblade.lims.capital`
|
||
|
|
- **API 版本**: 通过 `bladex.project.version` 管理(当前 2.8.1.RELEASE)
|
||
|
|
- **配置**: 每个模块有自己的 `application-{profile}.yml`,通过 Nacos bootstrap.yml 加载
|
||
|
|
- **服务间调用**: 通过 `lab-*-api` 模块的 Feign 客户端实现
|
||
|
|
- **认证**: JWT 令牌,网关层校验,通过请求头传播
|
||
|
|
- **数据库**: MySQL + MyBatis-Plus(自动填充 createTime/updateTime)
|
||
|
|
- **日志**: SLF4J + Logback
|
||
|
|
- **Docker**: 每个可部署模块都有独立的 Dockerfile
|
||
|
|
|
||
|
|
## 反模式
|
||
|
|
|
||
|
|
- 生产模块无单元测试(仅有 TestController/TestValue 空壳)
|
||
|
|
- `lab-iot` 和 `lab-plugin` 在根 pom 中被注释掉
|
||
|
|
- `.idea/` 目录提交到了版本控制
|
||
|
|
|
||
|
|
## 常用命令
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 构建整个后端(跳过测试)
|
||
|
|
mvn clean install -Dmaven.test.skip=true
|
||
|
|
|
||
|
|
# 运行某个模块
|
||
|
|
cd lab-gateway && mvn spring-boot:run
|
||
|
|
|
||
|
|
# Docker 打包
|
||
|
|
mvn clean package -Dmaven.test.skip=true -Pprod
|
||
|
|
```
|
||
|
|
|
||
|
|
## 备注
|
||
|
|
|
||
|
|
- 最大模块: `lab-lims`(横跨 controller/service/mapper/entity,约 250+ Java 文件)
|
||
|
|
- `lab-common` 被所有模块共享 — 修改需谨慎
|
||
|
|
- Docker 镜像标签格式: `${docker.registry.url}/${docker.namespace}/${artifactId}:${version}`
|
||
|
|
- 镜像仓库: 192.168.0.106:2375(Harbor,命名空间: lab)
|
||
|
|
- `lab-iot` 和 `lab-plugin` 在根 pom.xml 中被注释掉
|