service层的划分疑问?

来源:9-7 快速生成火车基础数据管理功能

慕神4535282

2023-07-29

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

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

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

谢谢老师的解答!!!

写回答

2回答

甲蛙

2023-07-31

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

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

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

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

1
3
甲蛙
回复
慕神4535282
没影响,开发起来不一样,部署起来是一样的
2023-07-31
共3条回复

慕虎0006524

2023-07-29

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

0
0

新版Springboot3.0打造能落地的高并发仿12306售票系统

最新版Spring3.0仿12306售票系统实战

852 学习 · 511 问题

查看课程