代码分层的一个问题
目前层级是
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