一、传统项目开发的问题
传统的项目中,会将全部的业务都写到一个项目中,用一台tomcat部署。此时如果某一个业务操作造成服务器宕机,则全部的项目业务都不能访问。
二、项目的垂直拆分
概念:将原有项目的模块系统化(一个模块一个项目),这样的拆分方式叫垂直拆分。
说明:
大型项目将模块系统化拆分是为了方便系统的开发和维护,因为通常大型项目都是由多个团队共同开发的。如果一个业务出现了问题,也不会对整个项目造成太大的影响,实现了软件架构之间的松耦合。
项目的垂直拆分就是分布式思想的应用。
三、Maven的继承和依赖
- 问题分析:
问题一:往常我们开发都是将所有的业务都包含在一个项目中,这样我们项目所需要的所有jar包都在一个项目下进行管理。但是如果是多个项目共同开发,应该怎么管理jar包呢?
解决方案:将一些公共的jar包文件进行抽取,抽取为一个单独的项目
xx-parent
.其它的系统只需要继承这个项目,就可以获取对应的jar包文件,这样方便包文件的管理和升级。
问题二:大型项目中经常会用到一些工具类,如果每个项目都单独引入工具类会造成代码维护的不方便。
解决方案:可以将工具类进行抽取,抽取为单独的项目
xx-common
.如果开发时需要用到工具类,只需要将工具类像引用maven的依赖包一样,引用工具类的jar包文件即可。
面试问题:请简述大型项目构建的注意事项。
回答:大型项目构建时,需要将特定的模块进行系统化.这样做可以将系统性能大大提升.即使其中一个项目出现了问题,也不影响其他项目的使用.方便系统的管理和维护.(开发的耦合性)。但是项目拆分完成之后会有jar包和工具类的管理性问题.需要再次进行抽取.将工具类项目抽取到
xx-commons
项目中.将jar包文件抽取到xx-parent
项目中.这样便于管理和维护。
- 继承的实现:
步骤一:创建一个父项目xx-parent
,项目的类型需要修改为“pom”. 打开项目的pom.xml文件,然后选择左下角"Overview"视图,在"Artifact"那里的"Packaging"打包方式修改为"pom"
说明:该项目作为父项目负责管理其它项目公共的一些jar包,需要将其它系统的公共依赖的jar包导入到此项目的pom.xml文件中然后保存即可,等依赖的jar包下载完后只要其它系统项目继承了该项目就会自动添加该项目中的依赖包。如果其它项目中需要特有的jar包,只需要在自己的pom.xml文件中添加自己的依赖包即可,就像多态一样。
步骤:创建一个工具类项目xx-common
,项目的类型为"jar",修改方式同前面修改"pom"项目一样。然后让该工具类项目去继承父项目xx-parent
——修改"Overview"视图中的"Parent"选项:
- 依赖的实现:
说明:项目的继承只能是单继承,即一个子项目只能继承一个父项目,这样如果有一个项目既需要继承父项目的jar包,又需要继承有工具类的项目该怎么解决。此时可以让抽取工具类的项目继承管理jar包的父项目,然后让子系统项目去依赖工具类项目,这样既有父项目的jar包,又能使用工具类项目中的工具类。
步骤:创建子系统项目,然后让其去依赖工具类项目,配置依赖的视图是"Dependencies"