一、分层介绍
- controller层:处理页面或者api请求的输入输出,定义VO(REQ,RES),没有业务逻辑,只做请求处理和下层逻辑接
- application层:处理跨领域domain的复杂逻辑,定义DTO
- domain层:领域核心逻辑,domain层内部又分为三层,自上而下分别为:domain、service(领域操作,数据查询等),entity(聚合根操作,抽象领域对象),repository(持久化接口,定义Po))
- infrastructure层:包含spring容器配置,utils,持久化实现,认证,授权,文档等和业务领域无关操作
二、开发原则
- 自上而下调用:上层可以调用下层,下层不能调用上层;下层不能依赖上层jar包
2、垂直隔离:同一层中不同模块不能互相调用,比如:UserApplicationService不能调用AppApplicationService,user聚合domain不能调用app聚合domain的内容,同样不同模块也不能互相依赖 - 逻辑聚合:application可以调用不同domainservice,实现复杂逻辑的聚合操作
- 自下而上开发:抽象很重要!!!抽象domain功能,application服务能力,供不同的页面或者api使用