采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,下午好! 请教一个问题,
在您的《在线视频》课程中,service层的代码是单独出来成为一个模块,供别的模块调用的,而本课程中,service层的代码又是放在各个模块内部的(比如说,business模块内有一个service包,放置本模块的service代码,同理,member模块也是一样)。
我的问题是:service层什么情况下应该划分为一个单独的模块,什么情况下又应该做为包的形式放在具体一个模块的内部呢?
谢谢老师的解答!!!
一般一个SpringBoot应用都会包含Controller Service Mapper(早期叫DAO)这三层。微服务中的每个应用也都会这三层。
《12306》和《在线视频》两个项目都是微服务项目,侧重点不一样,《在线视频》更偏向业务场景开发,架构设计上会简单一些,适合中型快速迭代项目。12306更偏向技术,会多一些架构设计,适合大型高并发项目。
《在线视频》只有一个数据库,开发起来会更简单,比如多表关联查询,或在逻辑处理上都和单体应用差不多。所以我们在设计时,Mapper、Service是放在一起,放在common模块里,接口入口Controller在不同的模块里,进来后还是会走Service Mapper,这条路是不变的。这样的设计导致的结果就是common包会包含本模块不需要的代码,不过影响不大,无非多些初始化,Jar包大些,好处是开发起来方便。项目看起像一颗树,树干(Mapper、Service)是一起的,树枝(Controller)是分开的。
而《12306》是每个模块一个库,也就是说他们的Mapper、Service没什么关联性,就算放一起,也不好做关联查询。所以设计时相互独立,每个应用都是独立的个体,没有依赖,当然我们也设计了一个common模块,这个只是放一些所有项目通用的工具类。这样的设计好处就是模块划分清楚,代码互相没有冗余,各写各的;缺点是开发相对繁琐。项目看起来就是一个一个的管道,互不影响。
非常感谢!
老师,您好,多提一嘴, 上述的两种架构设计对服务器的扩展性无任何影响吧? 《在线视频》的包也可以部署到多台服务器上协同工作?
没影响,开发起来不一样,部署起来是一样的
我没有看过老师之前的课程一般来说单体应用service是单独存放的,微服务应用就是每个模块都是一个应用所以会有多个service。这是一种可能不过我觉得首先应该明确一下两个项目service的用途,这个项目中的service是只用于存放模块的业务具体实现逻辑的目录。而有的微服务项目是模块名就叫service,不仅仅是只用于存放模块的业务具体实现逻辑的目录。这是另一种可能
登录后可查看更多问答,登录/注册
最新版Spring3.0仿12306售票系统实战
1.0k 28
523 12
565 8
618 8
1.0k 7