1.什么是拆分与聚合
我们之前把web层、service、dao层整合在一个工程中,那在下次如果有项目用到相同的代码时,我们又得重新复制粘贴出来,这样即浪费内存又降低了开发的效率。
但maven工具已经给我们提供了一个解决方案。
就是将每个层分开做成模块,然后再将每个层打包放到私服上,这也就是所说的拆分。
我们做项目时候再引用这些包的过程就叫聚合。
而拆分的好处是分工明确,方便维护,提高效率,降低内存空间。
2.拆分
思路
将dao层,service层,web层分别提取到一个个表现上独立的子工程中。
关系
或者我们可以看看idea中的表现:
dao层,service层,web层全部被分为了一个个独立的小模块,且拥有属于自己的main与pom。
但他们都依附于父工程maven-parent下。
且父工程的pom中则拥有子工程的依赖及其版本,子工程是可以从父工程中继承这些依赖的。
那么,这时我们就提出了一个问题:
为什么不在maven_parent定义所有jar包,而是定义版本号呢?
其实,问题的答案很简单:
1.为了避免继承父工程过多的依赖
为什么说避免继承父工程过多的依赖,目前的学习阶段中,我们会运用到的依赖数量很少,其内存占用可以说很少。可一旦我们接触大型项目时,动辄1TB,2TB的依赖便会一窝蜂地涌入你的父工程中,难道我们要把这1TB,2TB的依赖通通继承下来吗?
2.方便升级依赖
如果我们把所有的jar包全部存入父类,当我们想要升级或更新版本号时,就需要一个依赖,一个依赖的查找,更改。但只定义版本号的话,我们只需要在父工程中更改版本号即可,更加的方便快捷。
3.聚合
当我们进行过拆分后,且已经写完过main中的代码后,我们势必要将它们再次连接起来,这个过程就叫聚合。
在三层架构中,我们的基础代码,都存储在dao层。
而我们的中专则在service里。
以前我们仅需新建对象,直接调用方法即可使用,但现在它们变成了各个独立的小模块。
这时,我们便可以通过依赖获取了:
同理,web层也是一样
这一步,就将它们连接起来了。
而最后,运行前,我们还有最后一个步骤!
4.插件
在父工程的pom中已经web层的pom中加载tomcat插件:
将两个插件写入后,设置好web层的端口号以及请求路径,就开始将父工程以及三个子工程安装到本地仓库了。
ps:端口号默认是80,当然也可以不写,原因可参考80端口_百度百科 (baidu.com)
通过生命周期的安装指令进行安装,注意是父工程以及三个子工程都要进行安装,缺一不可!
安装顺序:
父工程maven_parent——>子工程dao——>子工程service——>子工程web
安装完成后,双击插件的run选项即可进入运行:
然后就可以到浏览器的网址,进行输入查询:
127.0.0.1:本机端口
8080:指定端口
/maven_web:请求路径
/hello:web层web.xml中的端口号
回车后将会得到一个空白页面,此时再返会Idea的控制台即可看到结果。