年后先做一些总结吧,不着急新东西
主要是项目框架上的总结,没有先后顺序,想到哪写哪
一、项目结构
在DDD思想下:
一个module下的项目分层主要是:
(1)application:
包含: api,job(定时任务),service(app层service)
api包括mapper,完成DTO到domain entity的映射
(2)common
util,config,exception,enums,constant,validate等
个人倾向于把apollo的config以namespace做封装,保证namespace和java上映射的一致性,命名可以以apollo开头,类似enums以Enum开头一样
exception 还是尽量放在common包下
validate可以考虑有,将基本的校验封装成工具类的形式,但这部分更加贴近于app层
(3)domain
entity,external,repository,service
external主要用来管理和外部的调用接口,其实现在infrastructure层中
repository主要用来管理和DB的接口调用增删改查,其实现也在infrastructure层中,仅在domain层中做调用
domain的核心service中的调用最佳实践就是松耦合+上下文
(4)infrastructure
external,persistence
external作为微服务之间接口调用的实现
persistence承载DAO层的包括mapper,包括assembler(做DB对象向领域实体映射),包括domain层repository的实现
(5)resources
mapper,国际化,环境配置,日志配置等等
二、领域层实现
https://gitee.com/tanglei09/template-frame 模板方法地址
目前是用模板方法的方式,有好有坏,先看看,Service内分好了业务流程
(1)好处:
逻辑上是清晰的,service累积起来之后,至少Service内部的逻辑是有区分的,也方便后续组员维护和重构代码
抽象方法存放公共方法,能够一定程度上提高整个代码的复用性
(2)坏处:
不够灵活,可能需要额外的类去完善流程一个Service,有些service用不到的流程也要在实现类里实现
注解式的事务有可能覆盖不到全部场景,可能需要编程式事务
有好有坏,我觉得合理的配合额外的类+设计模式可以提高模板的可用性。
暂时先写这么多,想起来再写