代码分层的一个问题

目前层级是

Controller

Service

Mapper = dao?

网上搜了一些文章见解

一个Controller只调用一个Service, 一个Service只调用一个Mapper 。

比如想获取当前用户的部门信息

先查到当前用户信息 - 再去查部门 这时候就需要查2张表了。

两个Service互相调用吗? 这不是强耦合了吗,

或者Service调用多个Mapper?

或者由Controller调用不同的Service组合数据


回答:

我个人所理解的四分层:

controller、service、repository (dao)、entity (vo)
写接口、写业务、写持久层、写实体类

只有 repository 和 entity 层是有一一对应关系,而 service 和 repository、controller 和 service 层并不会有这个限制,在一个 controller 由复数 service 提供支持并不少见,一个 service 由多个 repository 组成就更多了,毕竟很多复杂的业务场景下并不是一个实体类可以完成了(尽管可以暴力揉在一起,但在架构的时候还要考虑其他管理层面的因素)。

而你后面说的这个场景属于 service 层内部的再封装,至于你说用户部门两个 service 互相调用就强耦合了,service 本来就是业务逻辑的实现,在用户与部门的业务逻辑里本来就是强耦合的,其实是很那做到完美解耦的。

你可以把装载数据的逻辑划分清楚,加载用户为主体的数据由用户的 service 提供,加载部门为主体的数据有部门的 service 提供。


回答:

controller只是入口
核心是service
底层是mapper(或者广泛一点叫dao或者别的啥)

所以一般是 一个 controller - 一个 service - 多个 mapper

以上是 代码分层的一个问题 的全部内容, 来源链接: utcz.com/p/944379.html

回到顶部