代码分层

代码核心分为三层:请求处理层、业务逻辑层和数据持久层。

对于采用消息驱动设计的系统,需要引入消息处理层;对于需要远程调用其他服务的系统,需要引入远程调用层,负责远程调用或接口适配等工作。

代码分层示意图

代码分层示意图

图中默认上层依赖于下层,箭头关系表示可直接依赖,如:消息处理层可以依赖于 业务逻辑层,也可以直接依赖于数据持久层,依此类推。其中黄框表示需要根据情况引入事务管理。

请求处理层(Controller)

对外暴露 RESTful 接口,进行控制转发、参数处理、结果封装、异常处理等。

单条查询时,需要处理业务逻辑层返回的Optional对象,获取实际对象或抛出异常。

业务逻辑层(Service)

核心业务逻辑处理。根据需要组合数据层、远程调用层等,完成业务逻辑操作,处理实体到DTO的转换,根据需要缓存数据或发送事件通知。

简单来说,业务逻辑层承担了除请求处理层和数据持久层之外的绝大多数职责。

单条查询时,应该返回数据的Optional对象,由请求处理层进行进一步处理。

对于组合多个数据持久层的业务,通常需要增加事务控制。

数据持久层(Repository)

与底层 MySQL、Oracle、Redis 等进行数据交互。

消息处理层(Handler)

处理其他模块的消息,调用业务层进行处理,(如果需要)返回处理结果。

远程调用层(Client)

使用 Feign 或者其他技术定义的远程接口。

Last updated