微服务第一步--------如何将传统项目改造成多模块项目

本文详述了从传统单模块项目转型为多模块项目的全过程,包括创建子模块、拆分项目、改造common、biz及web模块,以及解决常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所周知,传统的单模块项目随着时间的推移会变得异常庞大,动辄几百个类,让我们后期的维护和扩展都面临着巨大的挑战,服务器也会因为项目的庞大面临着巨大的挑战。在这个微服务盛行的时代,传统的单机项目注定会一步步走向终点。今天,我们就来探讨一下如何将一个传统的项目改造成多模块项目。

一、前期准备

因为是改造项目,所以并不涉及到技术上的难点,在技术架构上并没有太多需要统一的地方。但是为了理解方便,还是推荐准备一个springboot的相关项目。如下图是我这个项目的结构。
在这里插入图片描述
先来简单介绍一个这个项目,项目是采用springboot2.x搭建的,其中有完整的登录功能,我们需要主要关注的是mvc层,其他例如conf、util稍后也会讲到。

二、创建子模块

首先,我们需要做的就是创建3个子模块,在idea里创建子模块的步骤是 右键项目->new->Module,如下图所示:
在这里插入图片描述

我们创建一个common模块用来存放项目的实体类和工具类,同时管理项目的maven依赖。因为夫工程是springbooo,所以直接创建maven工程即可,不需要创建springboot工程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如图是我创建好的maven工程,如果出现像我一样的java和resource没有指定,进行如下操作:
点击File->Project Structure->Modules,选择common项目
在这里插入图片描述
进行上面的操作后我们的java和resources源文件就指定好了。这样,我们的第一个子模块就创建完成了。
接下来,按照如上的方式,我们再创建两个模块,命名为candy-biz和candy-web(可自行命名),想知道这三个模块是干什么用的?别着急,我们一步步来。

三、拆分项目

进行到这一步是不是内心已经开始兴奋了呢,拆分传统项目有可能会有一些坑,因人而异吧,不过都不是什么技术难题,很容易就可以解决。

1.改造common项目

前面说到了,common模块主要用来存放我们的实体类、工具类、通用maven依赖等,下面让我们来进行改造。
首先我们来改造common中的pom文件,先贴张图:
在这里插入图片描述
这是没改造之前的样子,parent指向我们的夫工程,接下来贴一下改造后的样子:
在这里插入图片描述
标红的地方就是我添加的东西,其实就是添加了groupId 和dependence依赖(dependence是父工程中的,全部复制过来了)注意不要不build也复制过来了哦,只需要复制dependence就好了。因为common管理maven,所以我们的父工程就不要maven依赖了,只需要管理版本号就好了,如图:
在这里插入图片描述
pom文件改好后还没完,我们还要把实体类和工具类剪切到common中。在复制完之后,还需要查看一下报红的类,修改错误的导包,如图所示:
在这里插入图片描述
箭头所指的包结构是夫工程的包结构,我们这里需要改成自己的当前项目的包结构:在这里插入图片描述
这样我们的common子模块就完成了,接下来改造biz模块

2.改造biz模块

biz模块主要用来存放我们的配置类conf、service、和mapper\mapper.xml。在该咋该项目前,我们需要修改一下pom文件,让他导入我们的common包,如图所示:
在这里插入图片描述
这样,biz项目就可以使用我们common中的全部内容了,是不是很简单呢?其实多模块项目就是这种思想,把那些我们分离出来的相当于导成jar包供我们使用。
下面我们把conf、service、和mapper\mapper.xml全部复制到我们的biz项目下。如图所示在这里插入图片描述
项目结构就是这样啦,复制完成之后别忘了每个类中有错误的导包要修改一下,另外特别要注意!!!如果你是ssm项目,别忘了修改mapper.xml中的路径,这个很容易忘记而耽误时间排错。
这样我们的biz模块也改造完成了,接下来就是web层了。

3.改造web模块

web模块主要存放的是与前台交互的controller层、过滤器、拦截器、配置文件、启动类、前台页面静态文件(非前后端分离)等。
第一步还是修改我们的pom文件,导入之前的biz模块依赖,贴图如下:在这里插入图片描述
别忘了添加build,因为我们项目打包的时候是打web包的。
接下来,我们把controller,启动类,配置文件等全部复制到web项目中,并且处理一下导包的路径问题。另外如果你的配置文件或者注解中有关的路径也需要修改,这个需要非常细心,不然很容易忽略。如图,我的启动类有mapper的扫描注解配置了mapper的路径,因为现在mapper类在biz里,所以需要修改成biz的路径。在这里插入图片描述
做到这一步基本上就大功告成了,我们就可以把原父工程中的src文件全部删除掉了,一个多模块项目就完成啦!
做到这一步, 不要以为已经结束了,你可以启动一下项目试一下,是不是会报错,找不到你配置文件注入的bean,或者在你访问接口的时候提示404,出现这些原因是因为在多模块中,我们的启动类指挥扫描自己根目录下的类,而我们的配置类在其他的模块中,肯定是扫描不到的,我们还需要在启动类上加文章。如图所示:
在这里插入图片描述
看到启动类上我加了个

@ComponentScan(basePackages = {"com.candy.common", "com.candy.biz", "com.candy.web"})//扫描到其它子模块和自己的bean

加上这个注解,并配置其他子模块的项目路径,我们就可以在项目启动时,扫描到其它项目模块中的注入的bean了。现在快点启动项目尝试一下吧!!!1

结语

目前正在学习springcloud相关技术,今天这个只是迈出微服务的第一步,后续还会陆续发布微服务相关技术的博文,如果有问题或者我有不对的地方,欢迎留言哦!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值