Spring项目开发,按特性划分包,如果解决不同service层之间的调用?

发布于 2021-12-01 18:29:50 字数 301 浏览 663 评论 14

小弟目前在做开发,SpringMVC+Spring+mybatis,工程是按照特性划分包,但是会出现不同service层互相调用的情况。比如:userService处理用户信息,authService处理鉴权和账户信息,notifyService处理通知信息, 再添加用户的时候,需要同时操作用户表、鉴权/账户表和通知表(发邮件),会出现service层互相调用的情况,这该如何解决?

PS:如果按照层来划分包的话,这个我知道可以通过再加一层Manager将这些Service组织起来,但是包的划分目前不能改,所以也没考虑。

请教下大家,谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

瀞厅☆埖开 2021-12-04 20:39:10

en。确实。我现在是又加了一个facade层,就相当于加了个biz层

月牙弯弯 2021-12-04 20:39:10

领域设计出现问题,才会出现service之间的互相调用。除非被调用的service只是一个第三方或者其他额外的服务。

少女净妖师 2021-12-04 20:39:08

再套一个biz层,不过实际开发中多一个包总会令人不舒服,我现在的应用中还是service嵌套使用,只要逻辑清晰,等到需要重新整合包的时候会还是比较容易维护的,我觉得不需要想着一蹴而就

狠疯拽 2021-12-04 20:39:06

dubbo 

http://git.oschina.net/jacarrichan/ssm-dubbo

倚栏听风 2021-12-04 20:38:44

我知道是可以互相调用,但是多个service注入到一个service里面感觉不太爽,在stackoverflow上有人建议设计专门的供其他包调用的api,我也没啥思路..

醉生梦死 2021-12-04 20:38:32

@conhaifeng 所有service层的互调都可以拆解为对更低dao的调用,只不过不可避免的存在代冗余而已

怎言笑 2021-12-04 20:35:00

回复
恩。如果使用service对多dao调用,我觉得用户的所有相关功能,包括添加、修改、删除密码、修改账号,都要坐在userSerice里了。authService只处理鉴权。

鹤舞 2021-12-04 20:34:29

service层可以互调的

浅沫记忆 2021-12-04 20:32:06

service层之间互相调用,就用注入 来实现吗?

巡山小妖精 2021-12-04 20:26:22

回复
service层怎么还互相调用呢

惜醉颜 2021-12-04 20:05:18

回复
会有这种场景啊,比如,添加用户,需要调用userService表里的addUser方法,同时还要调用authService里的addAccount方法,把账号信息添加到账号管理表里。这不就有了service互相调用了。

平定天下 2021-12-04 18:42:39

如果service层只写增删改查,再加一层biz专门写业务的话,怎么感觉跟用service层写业务没区别啊? 毕竟DAO层就可以实现基本增删改查了。

南汐寒笙箫 2021-12-04 18:16:29

当然有区别,你以后转为soa服务的时候你不可能直接暴露dao吧,而是把service暴露出来,供其他客户端调用吧,你先看看我给的那个框架例子

囚你心 2021-12-03 20:59:52

使用四层吧,dao,service,biz,controller四层,dao和service只做增删改查,而且相互之间不存在依赖调用,biz里面写业务,如果后期使用rpc框架来管理服务也可以从service层这里切开达到快速重构的效果,这里我有个demo:
https://github.com/crab890715/framework-core

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文