关于项目结构划分的思考和总结
项目分层
- Controller
- 参数常规合法性校验
- 每个Controller函数对应一个Service函数
- Service 业务层,复用性低
- 参数业务合法性校验,使用 throw 处理异常
- Manager 可复用逻辑层
- 主要是Cache、MQ、复合Manager、RCP、HTTP等服务
- Mapper 数据库访问层
- 只允许自己的Service访问,其他Service访问仅能通过其Service
领域模型
DO Data Object
与数据库表结构对应,作为 Mapper 的返回值
DTO Data Transfer Object
数据传输对象,作为 Service 或 Manager 的返回值
BO Business Object
业务对象,作为 Service 的返回值,封装了业务逻辑的对象
AO Application Object
应用对象,
VO View Object
显示层对象,通常为 Web 层返回内容或模版渲染传输对象
Query
数据查询对象,上层封装的查询对象
简化后的方案
* Mapper 层返回的 DO 仅允许传入到 Service 或 Manager
* Service 或 Manager 返回的 VO 仅允许传入到 Controller 或 TService
总结
1 | C -Query—> S —DTO—> M |