1. 项目分层
1.1 项目的分层及调用说明
分层名称 | 作用说明 | 解释 |
---|---|---|
start | 启动入口,用于应用启动和全局的配置 | 与原来的 api 层分离, 只做启动、配置、单元测试、docker镜像打包 |
facade | facade层,前端 api、dubbo接口都在这里声明,会作为jar包供Consumer引入 | http到dubbo协议的转换,由网关实现,开发人员无需实现 |
service | 服务层 | 实现facade层的接口,实现具体业务逻辑,不是领域服务层 |
dao | 数据访问层,承接mysql、redis、es、消息队列生产者的操作,DTO、PO的定义 | 部分项目会用redis来做CRUD |
common | 公共层,提取公共的工具类、配置、常量、数据字典、多言,为api层、serivce层、dao层提供服务 | |
convert | 转换、防腐层,用于层与层之间调用时,值对象的转换,让服务提供方适用更多场景,减少或屏蔽底层数据结构变化对上层的影响。 |
自定义分层
允许开发者在api、facade、service、dao层中按需增加自定义层, 例如设计模式的 pattern 包,提取公共校验逻辑(非值对象校验)的 validate 层,缓存功能的 cache 包, 创建对象的 factory 包
1.2 层级调用关系
说明
- 逐层调用
- common 层供 facade 层 、service层、dao层访问
1.2 项目树形结构详细说明
./
├── Dockerfile //dockerfile,用于镜像构建、验证镜像,可用于本地自测,以及后续接入新的CI、CD流程。默认不能修改
├── HELP.md
├── Makefile //脚本,mac或者linux系统默认支持。idea需要安装 Makefile Language插件,默认已经自带构建docker镜像、运行docker容器、测试请求的命令
├── README.md //项目启动、使用、开发规范说明
├── docs //项目关联文档,README.md 中存放需求、概要设计、详细设计、UI设计稿、测试用例的链接
│ └── README.md
├── pom.xml //顶层pom,用于引入gaia-platform、子模块、默认加载的依赖
├── zm-activity-manage-server-api
│ ├── README.md
│ └── pom.xml
├── zm-activity-manage-server-common //common层。存放自定义工具类、自定义配置、常量、枚举、数据字典等,为其他子模块提供服务
│ ├── README.md
│ └── pom.xml
├── zm-activity-manage-server-dao //数据层。存放mysql、redis、es以及消息队列的生产者的相关方法、值对象、配置。消息队列的消费者,直接在service 层申明使用。dao层供service层直接调用
│ ├── README.md
│ ├── pom.xml
│ └── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── zm
│ │ └── activity
│ │ └── mybatis
│ │ ├── config
│ │ │ └── MybatisDemoConfig.java
│ │ ├── entity
│ │ │ └── MybatisDemoUser.java
│ │ └── mapper
│ │ └── MybatisDemoUserMapper.java
│ └── resources
│ ├── application.yml
│ └── mappers
│ └── MybatisDemoUserMapper.xml
├── zm-activity-manage-server-facade //facade层。定义dubbo、feign接口。对于B端,需要对外提供dubbo服务的, 在此声明dubbo接口。
│ ├── README.md
│ ├── pom.xml
│ └── src
│ └── main
│ └── java
│ └── com
│ └── zm
│ └── activity
│ └── dubbo
│ └── api
│ └── DemoService.java
├── zm-activity-manage-server-service //service层。service层实现业务逻辑,调用dao层,实现dubbo接口,监听消息队列的消息,为 api 层提供服务
│ ├── README.md
│ └── pom.xml
│ └── src
│ └── main
│ └── java
│ └── com
│ └── zm
│ └── activity
│ └── service //业务服务
│ └── DemoService.java
│ └── convert //数据转换层,只做值对象的转换。数据返回给api层时,要调用里面的方法转换成前端需要的对象结构
│ └── DemoConvert.java
└── zm-activity-manage-server-start //应用入口。只用于启动项目、配置项目。引入 其他子模块,会使用 start 模块生成的 jar 包构建镜像
├── README.md
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── zm
│ │ └── activity
│ │ ├── ZmActivityManageServerApplication.java
│ └── resources
│ ├── application.yml //整个项目的配置,架构组这边会在 resources 目录下创建 config 目录,统一管理项目的自定义配置
│ └── logback-spring.xml //日志配置