本课程涉及的Springboot商用多组件Maven框架DEMO,可关注【校招VIP】公众号,回复【9001】,可自行下载。
大家好,我是校招VIP的大拿老师。那么我们继续开始推推课程的第二节,搭建商用的SpringBoot的框架,以及Maven的分层结构。
我们这节课呢,主要是一个实战的过程,主要讲四个东西,一个是maven的组进分层和我们平时自己做的包分层的区别。第二个呢,我们为什么要搭建这个分层,它的逻辑是什么?第三啊,就是实战怎么去搭建,怎么去配置,然后最后可以运行下来。最后呢这个搭建好的东西,我们是提供代码下载的。
maven 分层和包分层的区别
我觉得两张图,一张图是maven分层,你发现它分了三层,它每层都是一文件夹,好像是个组件的概念,它是这么分出来的,那么我们有的时候大家用的时候,它是用这个 Pack,我们的包来给它做分隔的,比如说controller是吧,这是interface,这是service。
我们来看一下,呃,一个工程的目录的样例。
比如说这个,它每一个都可以去建立一个炸包啊,很多同学可能看了一些所谓的备战路线啊,里面总会有一个maven的一个相关,但是跟大家去实话实说,maven的东西跟他讲的完全不一样,maven不是一个考点。大家用的就是包引入是吧,最重要的是包的依赖,我怎么去进行包的这个版本呢?你会发现其实这个就是一个的小项目,但是会有一个总包来进行一个管理啊,这看似像一个项目,但是他有一个包来管理,这可能很多同学看着,不太理解,那我们一起来搭一下。
在搭之前呢,我们必须想清楚我们要搭几层,怎么去搭,让我们看一个MVC。
我们大家经常听说MVC,MVC是一个我们认为是一个简单的一个模式,我们从网页开始,敲个网址,就经过容器啊,他们开了容器,然后进入到CTRL转,然后CTRL去访问我的底层数据,当然呢,我们正常讲项目内部的话,我们都把容器放开,是后面这两层,但是我们可以细分为三层,就是controller去调用service服务啊,服务去叫底层的数据层,然后controller的话,我们是不对外进行依赖的,通过HTP接口或者是我们的一些RPC的接口往往外去,但是service map,比如说我有些定义啊,有些实体类啊,那别的项目如果用的话,他也可以去直接炸爆依赖,而不是通过各种自己再写一遍,那代价就比较大。
那每一个里面呢,service也可以分service的定义和它的实现,那map呢,它基本上不用一个实现类的,就是要么就是插描的方式实现里面还有个实体类,你发现两个都是定义类。就大项的项目至少会分成四层,再加上一层可能用cloud,但是大家注意cloud不在项目本身,cloud是跟项目无关的,它是单独的一个架构,它会单独搭一个项目出来叫cloud。map也是定义,我们就把它放在这个定义层,所以我们这个项目里面呢,是分了三层,定义层,Service层和ctrl层,我们就搭三层。我们会把这个数据库相关的全部扔这里面来,这样的话大家的东西就会很好放,我们的目标都很明确,CTRL调service 调,interface,不能跨调。
搭建要注意几个问题 :
首先要注意maven,实际上是有一个东西叫POM包啊,POM包它有三个包叫POM,它只做包的管理。第二要注意spring boot,它的启动点不是在插开始,它不是从web点插这个文件,而是它自己封装那个炸包,是从application开始,但这个application注意包的关系,它是属于所有包的最底层。 那最后希望我们部署一个把它执行起来。
那我们来进行一个操作,首先你有一个project,因为我是要分三层吗,我不想先生成这三层,本身我要生成一个外部的一个包管理,然后每个程序引入的时候才去真正的使用。变量的声明和使用是分开的,那项目不管是多大,以后的这个版本管理后要升版本了,我就可以在这一改,所有的组件我就不用管了。
那么我们先来生成一个PM文件,可以用这个spring initialize,但是要注意,这个时候炸包不是目的。
我们来看一下,我们用的是最常用的,商业中最常用的1.8的版本。推推这个项目就是我的副包,副包的话是不分层,就这个项目名叫推推,然后呢,因为这个版本里有这个POM我就想进POM,然后这个Java炸包,炸包和web包的区别大家知道吗?就一般来说这个web包是放在服务器,我们叫tomca上容器上去进行,因为这时候才能进行这个网址的request的这么一个映射。但是,我们说boot它号称去插mal是吧,所你你如果是用web的话,它入口就是这门方法是吧,但是web的话是在web点插mal,那这个它是一个注解啊。从这开始执行,但是际上它里面已经把tocat给给封装进去了啊。有字符artifict啊,你可以把所有包你可以用的包都把它放进去啊,我们就不要这个模板文件了。
目前推推有定时任务,因为我们内部现在是把它肯定是把这个工具类给它单独分出来一个新的就是任务的项目就好了。他肯定是单独项目,他不可能跟我们的业务项目关联到一起,他是把项目搭好,弄个接口,我们去用它就好。
那么这个搭建好了,我们来看一下它的目录,因为我们刚才是覆盖了之前的一个项目啊,所以说这个它出来一些不应该有的东西啊,我们快速的把这块剪掉,重新搞一个跟前面接对接起来,好我们来看一下这个构建好的这个代码。它里面没有没有什么东西是吧,它就有个 idea的文件,这跟我们项目无关,这有个POM,它就有个包的管理,这个POM呢,它当然这个引录boot基层的代码,下面是他现在依赖的东西。
刚才我们的三层架构第一个modeldu。interface我们就不用没有来生成,因为他是个空的项目,它不用支持,所以我们就这么写,我们的项目跟它保持一致,一个空项目名字会好好起一下,它在里面的东西就非常的简单,连这个引入的包都没有,它这么一个层,但是东西很简单。
同理我们把这个service层也先搭好。我们要把web层搭下来,但web层要用这个spring web用spring boot的东西,所以我们再次用module,这个时候就选择是一个project,最好是一个铭文project,这跟铭文是一样的,然后是炸包。这里面的web层呢,我们就不要管其他东西了,我们就看web层就好了,Web层我们要用这个B就可以了,因为它是做接口层的。
接下来进行几个事。 首先呢,我们要经历包的概念,它就叫CT inter1这个不能叫推web了,我们就叫它推一,所有文件夹的最小级,然后我们进一个我们自己用的文件夹,这样的话我们就很好去放东西了。那这个地方呢,我们注意它叫接口层,我们的起始叫interface,然后呢,后面就不断往上加啊,然后服务层的service层呢,我们叫它Service。这样的话我们的东西就搭起来了,但是注意现在你如果是跑运行的话,跑一个没文的看一下啊。你发现它串不起来,他现在只能跑这个word,就是运行的时候不用管下面三层,就只管总的就好了。Interface也跑了,但是他现在没有完成但这种你跑时候,你因为你没有写东西,所以跑不起来,这个时候我们把它们三层跨关联起来,我们说CTR层可以调,service 调 interface是吧,我们首先要声明它的包,给它放到PM里面去,一定要放在最外层。然后我们加一个声明。然后它直接给你生成了。
这是第一个,然后第二个的话,我们把service这引进来之后呢,这边的****interface暂时不用动了,它其实这个地方可以加个dependenceency,但现在没有包,我们就这么放着。然后呢,我们service层因为要去做它的实现嘛,所以它要依赖于inter层,所以这个地方加一个,把这个表引过来就好了。但是我们说了它的版本号我们就不用管了,这个时候把这个删了,这样的话就可以引进来,同理我在web层,我们就不用依赖interface层。Service层依赖于interface层,我们的web层呢,给它加一个啊,加一个依赖于S层,其实它里面就有就interface层了,因为这里面已经打包的时候已经把interface打进去了。因为现在没有业务,我们就随便写下Rest controller,然后给他一个地址,我们就认为是空包,这样的话我们就可以直接跑起来。 好,我们这上也加一个request mapping,这样的话我们跑起来的时候就可以了。这样的话看一下这里面组件是不是三个都在,这样再跑一下试试行不行,你必须把它绑进来,这样的话他知道我们是一体的。
那我们就clean一下,然后再跑一下,注意这个P里面呢,它生成的包里面带版本的,我们就把下载它没有版本了那就是有引入,但是没有声明,我们去看一下这个PM的包,是不是没有引入。snap short,引入了web,他刚才说test不认识,然后把test删掉就好,然后这样的话,我们开始进行跑一下,实际上是可以直接顶他,再重新跑一次。
他从这开始起啊,但是因为现在没有逻辑在里面,我们就看能不能把网站搞起来,起来的话我们今天成功了。那么这就提起来了,提起来我们在这个网址里面打个127,因为我们的路由就是空,看能不能出来。他返回相当于他已经访问到这了,返回到我们刚才这个路由里面去了,那我们就可以进行网站的开发。
那么整个代码的东西就是这样啊,我们最后就配置那个工具出来,我们后面的开发就以这个作为基础,如果大家感兴趣的话,可以直接去下载,因为下节课就开始进入到项目的开发里面,我们就用这个框架来进行开发,好的,那么这节课就讲到这个地方。录播视频请关注校招VIP小程序。