请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

service层的划分疑问?

老师,下午好!
请教一个问题,

在您的《在线视频》课程中,service层的代码是单独出来成为一个模块,供别的模块调用的,而本课程中,service层的代码又是放在各个模块内部的(比如说,business模块内有一个service包,放置本模块的service代码,同理,member模块也是一样)。

我的问题是:service层什么情况下应该划分为一个单独的模块,什么情况下又应该做为包的形式放在具体一个模块的内部呢?

谢谢老师的解答!!!

正在回答

2回答

一般一个SpringBoot应用都会包含Controller Service Mapper(早期叫DAO)这三层。微服务中的每个应用也都会这三层。

《12306》和《在线视频》两个项目都是微服务项目,侧重点不一样,《在线视频》更偏向业务场景开发,架构设计上会简单一些,适合中型快速迭代项目。12306更偏向技术,会多一些架构设计,适合大型高并发项目。

《在线视频》只有一个数据库,开发起来会更简单,比如多表关联查询,或在逻辑处理上都和单体应用差不多。所以我们在设计时,Mapper、Service是放在一起,放在common模块里,接口入口Controller在不同的模块里,进来后还是会走Service Mapper,这条路是不变的。这样的设计导致的结果就是common包会包含本模块不需要的代码,不过影响不大,无非多些初始化,Jar包大些,好处是开发起来方便。项目看起像一颗树,树干(Mapper、Service)是一起的,树枝(Controller)是分开的。

《12306》是每个模块一个库,也就是说他们的Mapper、Service没什么关联性,就算放一起,也不好做关联查询。所以设计时相互独立,每个应用都是独立的个体,没有依赖,当然我们也设计了一个common模块,这个只是放一些所有项目通用的工具类。这样的设计好处就是模块划分清楚,代码互相没有冗余,各写各的;缺点是开发相对繁琐。项目看起来就是一个一个的管道,互不影响。

1 回复 有任何疑惑可以回复我~
  • 提问者 慕神4535282 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2023-07-31 11:03:46
  • 提问者 慕神4535282 #2
    老师,您好,多提一嘴,
    
    上述的两种架构设计对服务器的扩展性无任何影响吧?
    《在线视频》的包也可以部署到多台服务器上协同工作?
    回复 有任何疑惑可以回复我~ 2023-07-31 11:10:41
  • 甲蛙 回复 提问者 慕神4535282 #3
    没影响,开发起来不一样,部署起来是一样的
    回复 有任何疑惑可以回复我~ 2023-07-31 17:14:15
慕虎0006524 2023-07-29 22:16:43

我没有看过老师之前的课程
一般来说单体应用service是单独存放的,微服务应用就是每个模块都是一个应用所以会有多个service。这是一种可能
不过我觉得首先应该明确一下两个项目service的用途,这个项目中的service是只用于存放模块的业务具体实现逻辑的目录。
而有的微服务项目是模块名就叫service,不仅仅是只用于存放模块的业务具体实现逻辑的目录。这是另一种可能

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信