1.分模块开发
1.分模块开发意义
我们写一个项目都喜欢写在一个模块中,就比如SSM 整合开发,将所有业务功能集中一起开发,会存在一些问题:
- 当其中一个功能出现问题,会导致整个项目无法正常启动,从而等导致其他正常的功能无法工作
- 项目的维护成本比较高
- 代码可能会出现重复的问题
将原始模块按照功能拆分成若干个子模块,达到分模块开发:
- 就能方便模块间的相互调用,接口共享
- 项目中每个功能都可以单独维护,从而降低了解耦合
- 可以很方便的被别人使用
2.分模块开发
分模块开发设计
-
根据项目的业务功能拆分
将项目的每一层(controller、service、dao、pojo)分模块拆分出来 -
根据项目的业务模块拆分
将项目的每一个业务功能分模块进行开发,例如电商系统中的订单模块单独抽取出来,商品模块抽取出来
分模块开发案例
基于 SSM 整合的项目实现分模块开发
例如:将 pojo (实体类)层独立开发

-
创建新模块

-
将 ssm_demo 中的 pojo 拷贝到 ssm_pojo 中,并删除 ssm_demo 中的 pojo

然后发现:ssm_demo中用到的实体类对象都爆红,因为实体类已经没有了

因此需要在 ssm_demo 中添加 ssm_pojo 的依赖
- 将 ssm_pojo 的依赖 下载到 maven本地仓库 中
使用maven的install命令,把其安装到Maven的本地仓库中


-
在 ssm_demo 项目的 pom.xml 添加 ssm_pojo 的依赖
<dependency> <groupId>com.maoge</groupId> <artifactId>ssm_pojo</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
注意:如果没有做第三步,即使添加了依赖,依然还是报错,原因是Maven会从本地仓库找对应的jar包,但是本地仓库又不存在该jar包所以会报错
- 执行 ssm_demo 的compile(编译)


至于其他层的分模块开发,家人们可以线下自己尝试去试试,与上雷同
2.依赖管理
-
依赖:指当前项目运行所需要的jar包,一个项目可以设置多个依赖
-
格式:
<!--设计当前项目所依赖的所有jar--> <dependencies> <!--设置具体的依赖--> <dependency> <!--依赖所属群组id--> <groupId>junit</groupId> <!--依赖所属项目id--> <artifactId>junit</artifactId> <!--依赖版本号--> <version>4.12</version> <!--依赖的作用域--> <scope>test</scope> </dependency> </dependencies>
1.依赖传递
- 依赖具有传递性
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系。
- 间接依赖:被依赖的资源还依赖其他资源,则当前项目间接依赖其他资源。(举例:A依赖B,B依赖C,所以A间接也依赖C)

依赖传递冲突
依赖冲突:一个项目中导入了多个不同版本的同名包,那么就产生了冲突。这个冲突很有可能导致项目无法运行。
举例:

基于依赖传递出现的冲突问题,maven提供了三种处理情况
- 当同级中配置了相同资源的不同版本,后配置的覆盖前面配置的
- 当依赖中出现相同资源时,层级越深,优先级越低;层级越浅,优先级越高
- 当被依赖的资源在相同层级时,配置顺序靠前的覆盖配置顺序靠后的
2.可选依赖
可选依赖:指对外隐藏当前所依赖的资源
举例:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
<!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源不具有依赖传递性-->
<optional>true</optional>
</dependency>
3.排除依赖
排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本
举例:

最低0.47元/天 解锁文章

139

被折叠的 条评论
为什么被折叠?



