SSM框架构建多模块之业务拆分实践
在如下这两篇篇文章我都或多或少强调过业务分层方面的的方法和注意事项,感兴趣的可以看看:
系统设计和系统划分有定律可循
业务拆分的思考
之前是说,现在是做。以我个人博客为例,我的博客最初只是一个单体应用,但是我决定将其拆分为多个模块,总体来说,还是一个单体war。但是性质是不一样的。
下面进入正题:
贴图说明:
blog-parent是父工程
blog-common主要放置工具类和其他可以复用的第三方插件或者是其他功能类
blog-entity 放置实体,通常是pojo也可以叫entity或者javabean
blog-dao 放置与数据库交互的接口类,也就是mapper
blog-service 业务接口及其实现类
blog-web 前台展示同时如果还开发安卓应用的话,直接提供接口
blog-generator 是代码生成器,主要应用于个人开发,提高效率用的
上述的依赖关系除了blog-generator之外,可以用思维导图可以表示为如下所示:
不过这个结构似乎也不太合理,适用于目前而言,业务不是特别大,最好采用这种形式表示:
两图比较主要区别在于将blog-common放到blog-service中,因为blog-service是业务逻辑,通常业务逻辑是可以复用多个的,而像一些判断或者是引用第三方插件,通常都在业务逻辑里具体实现后,而web模块中controlller直接调用即可,如果不放在blog-service中,就会出现一个问题,问题的主要凸显就是业务逻辑复用性差,导致很多都在controller里面下,也就是接口里面写,不利于复用,而且代码质量也会下降。
注意:
每个依赖记得都要maven install安装到本地仓库,否则会依赖不了,报错。
项目github地址为:https://github.com/youcong1996/ChallengerV.git
项目结果图如下所示:
前端模板主要采用的是layui,其实bootstrap也有很多这样的,大家可以在网上找找。
其实我参考了github上的不少项目还有一些小伙伴们的博客,其实还可以再细化分为如下(这里我还是用思维导图表示):
这样做的好处,主要是考虑可扩展性,前面列举的图一和图二可扩展性不是特别好,当然了,如果对于是一个人开发的话,直接单体应用即可,不用拆分,如果是两到三个人,可以按照图一和图二来。当然了,图一和图二还有一个考虑就是可读性,公司开发人员流动性比较强,特别是中小公司,总会有人走,也总会有人来,假如你是来的人,如果看到公司所有的代码全部在一个单体war上,而且有很多很多的com.xxxxx之类的,而且com.xxxxx下还有几十个类,试问你会作什么感想呢。
按照图三的设计,以后的扩展可以是这样:
随着业务一步一步扩大,可以将blog-web拆分为六个war,这就可能用到微服务架构了。
最后小结:
业务的扩展是一步一步慢慢来的,绝非一开始直接就业务拆分和分布式,那都是扯淡。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云Api网关导入Swagger功能简介
广告位 Api网关通过导入Swagger文件创建和更新Api的功能已经上线了,更多帅气功能会逐步推出Api网关目标是让您发布应用更加便捷和安全,让您更直观、便捷的管理和调试您的所有Api接口欢迎试用阿里云Api网关产品,任何问题可以加Ding群讨论:11747055 1. 什么是swagger 微服务现在在商业引用程序开发中,已经广泛使用。而Api作为连接微服务之间的桥梁扮演着至关重要的角色。如何可以更清晰的描述微服务接口、如何可以更便捷便捷的管理Api,已经成为开发人员呼声很高的需求。而作为设计和管理api的利器,Swagger也随之成为了热门。 Swagger出现在2010年,它设计的初衷在于制定一种简单的规范,用于设计Api。Swagger文件可用于开发人员后期维护和管理。随着不断的发展,基于swagger规范,已经衍生出很多工具,用于辅助创建和管理Swagger文件,并已经形成了Swagger生态。用户可以通过Swagger工具来对api的整个生命周期进行设计,管理以及测试等操作。Swagger规范现在已经改名为Openapi规范,它将作为一种定义api管理的规范不断的完善与发...
- 下一篇
JVM难学?那是因为你没认真看完这篇文章
一:虚拟机内存图解 JAVA程序运行与虚拟机之上,运行时需要内存空间。虚拟机执行JAVA程序的过程中会把它管理的内存划分为不同的数据区域方便管理。 虚拟机管理内存数据区域划分如下图: 数据区域分类: 方法区: (Method Area) 虚拟机栈 : (VM Stack) 本地方法栈 : (Native Method Stack) 堆: (Heap) 程序计数器: (Program Counter Register) 直接内存 : (Direct Memory) 说明: 1. 程序计数器 行号指示器,字节码指令的分支、循环、跳转、异常处理、线程恢复(CPU切换),每条线程都需要一个独立的计数器,线程私有内存互不影响,该区域不会发生内存溢出异常。 2. 虚拟机栈 是线程私有的,声明周期与线程相同,虚拟机栈是Java方法执行的内存模型,每个方法被执行时都会创建一个栈帧,即方法运行期间的基础数据结构,栈帧用于存储:局部变量表、操作数栈、动态链接、方法出口等,每个方法执行中都对应虚拟机栈帧从入栈到处栈的过程。 是一种数据结构,是虚拟机中的局部变量表,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作