解决多模块开发中的问题(聚合&继承)

简介: 解决多模块开发中的问题(聚合&继承)

一、聚合

  • 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
  • 聚合工程:通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件)
  • 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
  • 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题

1.1创建Maven模块,设置打包类型为pom

<packaging>pom</packaging>
  • 每个maven工程都有对应的打包方式,默认为jar,web工程打包方式为war

1.2设置当前聚合工程所包含的子模块名称

<modules>
  <module>../maven_ssm</module>
  <module>../maven_pojo</module>
  <module>../maven_dao</module>
</modules>
  • 聚合工程中所包含的模块在进行构建时会根据模块间的依赖关系设置构建顺序,与聚合工程中模块的书写位置无关
  • 参与聚合的工程无法向上感知是否参与聚合,只能向下配置哪些模块参与本工程的聚合

二、继承

  • 概念:继承描述的的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
  • 作用:
  • 简化配置
  • 减少版本冲突

2.1创建Maven模块,设置打包类型为pom

<packaging>pom</packaging>
  • 建议父工程打包方式设置为pom

2.2在父工程的pom文件中配置依赖关系(子工程将沿用父工程中的依赖关系)

<dependencies>
  <dependencicy>
    <groupId><org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version><5.2.10.RELEASE/version>
  </dependencicy>
  .......
</dependencies>

2.3配置子工程中可选的依赖关系

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.2.16.16</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

2.4在子工程中配置当前工程所继承的父工程

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
        <!--填写父工程的pom文件-->
        <!-- lookup parent from repository -->
        <relativePath/> 
    </parent>
  • 子工程中使用父工程中的可选依赖时,仅需要提供群组id和项目Id,无需提供版本,版本由父工程统一提供,避免版本冲突
  • 子工程中还可以定义父工程中没有定义的依赖关系

三、聚合和继承的区别

  • 作用:
  • 聚合用于快速构建项目
  • 继承用于快速配置
  • 相同点:
  • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom 文件中
  • 聚合与继承均属于设计型模块,并无实际的模块内容
  • 不同点:
  • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己


 

相关文章
|
7月前
|
Java Maven Spring
Maven高级-继承、实施步骤及聚合与继承的区别
Maven高级-继承、实施步骤及聚合与继承的区别
76 0
|
4月前
|
存储 测试技术 数据库
仓储设计实现问题之聚合实体在DDD中定义如何解决
仓储设计实现问题之聚合实体在DDD中定义如何解决
56 0
|
3月前
|
存储 NoSQL 数据处理
组合和继承怎么集成一个性能较好的项目
组合与继承是面向对象编程的核心概念,前者通过对象间关联实现高效解耦,后者则重用代码以节省空间和内存。组合常用于现代项目,利用代理与依赖注入简化代码管理;而继承简化了子模块对父模块资源的应用,但修改会影响整体。随着分层解耦及微服务架构如SpringCloud的出现,这些技术进一步优化了数据处理效率和服务响应性能,尤其在分布式存储与高并发场景下。同步异步调用、Redis分布式应用等也广泛运用组合与继承,实现代码和内存空间的有效复用。
|
4月前
|
设计模式 固态存储 开发者
创建一个仅用一个函数/模块/类就可以处理这组不同事物的抽象
在软件开发中,良好的变量名和函数名能够显著提升代码的可读性和可维护性。对于变量命名,建议使用有意义且易于发音的名字(如 `currentDate` 而非 `yyyymmdstr`),对同类变量使用一致的词汇(如统一使用 `getUser`),以及使用解释性的变量名以减少理解成本(如使用常量 `MILLISECONDS_IN_A_DAY` 替代数字 `86400000`)。此外,避免不必要的上下文重复,并使用默认参数代替逻辑运算。对于函数,应限制参数数量(理想情况下不超过两个),确保每个函数只做一件事,并且函数名应清晰描述其功能。通过遵循这些原则,代码将更加简洁明了。
35 3
|
5月前
|
前端开发
领域驱动使用问题之领域驱动设计中聚合之间的依赖如何管理
领域驱动使用问题之领域驱动设计中聚合之间的依赖如何管理
|
4月前
|
uml
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
532 0
|
设计模式 存储 Java
JAVA设计模式11:组合模式,以统一的方式处理单个对象和组合对象
JAVA设计模式11:组合模式,以统一的方式处理单个对象和组合对象
176 0
|
XML Java Maven
Maven高级——继承与聚合——继承关系实现
Maven高级——继承与聚合——继承关系实现
187 0
|
uml C++ 容器
「软件设计」UML中关联,聚合和组合的区别是什么?
「软件设计」UML中关联,聚合和组合的区别是什么?
|
uml C++ 容器
「软件设计」UML中关联,聚合和组合区别
「软件设计」UML中关联,聚合和组合区别