为了账号安全,请及时绑定邮箱和手机立即绑定

如何避免 Service层互相调用,避免 Service层调用其它的Dao层

如何避免 Service层互相调用,避免 Service层调用其它的Dao层

PHP
噜噜哒 2019-03-14 05:03:19
学习架构过程中出现了几种问题: 部分 Service层 会调用 其它的Dao层, 比如 UserService 会调用 UserPositionDao UserBookDao 部分 Service层 会调用 其它的Service层, 比如 UserService 会调用 UserAppleService UserPencilService 部门 Controller层 会调用 多个Service层 按照分层设计思想来说,这样的设计是不合理的,有大神说要使用 Facade分层来避免,于是我改成了 一个 Service 只调用 一个 Dao, 且不能互相调 Service 一个 Facade 可以调用不同的 Service 一个 Controller 只能调用 一个 Facade,且不能调 Service 这样问题来了, 我在UserService里写的所有方法,是不是都要在 UserFacade里重新实现一遍,否则 Controller 没法穿透 Facade 去使用 Service的方法。 除非 Facade 与 Service 平级,Facade 只是一种特殊的 Service, 且 Controller 最多只能同时调用它自己的 Facade 与 Service. 是这样嘛?
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

Service调用其他ORM层怎么了,要不分层还有什么意义,直接去掉Service不行了

查看完整回答
反对 回复 2019-03-18
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

一般springmvc架构设计调用规范
Controller调用Service层是:一对一接口调用,且Controller层不做任何业务处理,目的是为了后续拓展直接替换Controller为RPC框架而准备
Service层避免互相调用:一般情况下事物配置在service层,为了避免事物嵌套或单个事物过大等问题的
service层调用dao层:除了尽量控制事物大小,即控制Service调用dao层的复杂度,将单个事物经量控制在100ms之内

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 3355 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信