接下来的一段时间,我们将要来学习微服务,本着重实战的原则,你不需要去深究一些相关的原理,只要能跟着教程一步一步做下来,就可以快速地掌握Java微服务开发技巧。

我们学习微服务的第一步,就是要知道怎么创建聚合工程,虽然说微服务和聚合工程没有直接和必然的联系,但是现在工作中只要用到微服务,就一定是聚合工程。既然绕不开,我们就从聚合工程开始吧。

聚合的意义

对于一个大型的项目,如果我们直接作为一个工程开发,由于相互之间的依赖我们只能从头到尾由一组人开发,否则就会出现一个类好多人开发,相互更改的混乱局面,这个时候我们就将项目进行了横向和纵向的拆分。

横向拆分

所谓的横向的拆分就是我们平常说的三层架构,将每个功能模块分成三层去开发 即web层(表现层),service层(业务逻辑层)、dao层(数据访问层、持久层), 可以理解为将一个功能模块的不同调用过程(三层的调用)进行了水平方向的拆分。

纵向拆分

所谓的纵向拆分就是将一个项目根据多个功能模块进行拆分,可以理解为,为了完成一个系统,深度(纵向)分析需要有哪些功能,然后将这些功能独立出来(独立为模块),进行了(纵向)拆分。

横向和纵向拆分后,对每层架构和功能模块进行单独的开发,项目整合的时候就需要有一个能够整合这些架构或者模块的工程,这就是所谓聚合工程的意义。

创建聚合工程的要点(重点理解):

该聚合项目(父级项目、顶级项目)本身也是一个maven项目,它必须有自己的pom

它的打包方式必须是:pom

引入新的元素:modules—module(模块:每个模块其实也是一个项目)

版本:聚合模块的版本要和被聚合模块的版本一致

relative path:每个module名称都是一个当前pom的相对目录

目录名称:为了方便快速定位,模块所处的目录应当与其artifactId一致(maven约定而不是硬性要求),总之,模块所处的目录必须要和聚合模块中的模块目录保持一致。

聚合模块减少的内容:聚合模块的内容仅仅是一个pom.xml文件,它不包含src/main/java和src/test/java等目录,因为他只是用来将其他模块整合构建成一个整体的工具,本身并没有实质的内容。

聚合模块和子模块的目录:它们可以是父子级,也可以是平行结构(推荐)。

默认是父子级结构,但是不建议使用,因为父子级是一种嵌套关系,子模块要建在父模块里面,维护起来很容易紊乱;推荐使用平行结构,是因为维护起来一目了然,条理比较清晰,当然同时要在pom文件的中修改相应的目录路径配置。

如果聚合模块对某一个子模块进行了删除操作,那么一定要在聚合模块的pom.xml文件中的modules选项中将对应的子模块删除掉。

快速入门

首先,我们创建一个父项目:

选择简单项目

打包方式是pom,不要选错了

pom.xml增加hutool的依赖,后面有用。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.javaxbfs</groupId>
  <artifactId>parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>父项目</name>
  <description>父项目</description>
  
  <dependencies>
      <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>4.3.1</version>
      </dependency>
    </dependencies>
    
</project>

最后再更新一下maven一下依赖

接下来是重头戏,我们要创建子项目,也叫做模块

首先右键点击 父项目, 然后点击 New -> Other -> Maven -Maven Module -> Next

和父项目一样,这里也勾选 Craete a simple project,然后点 Next

点Finish

目录结构变成了这样

在子项目里面创建一个测试类

测试代码

package com.child.test;

import cn.hutool.core.date.DateUtil;

public class TestChild {

 public static void main(String[] args) {
  System.out.println(DateUtil.now());
 }
 
}

效果:

可以看到,子项目虽然没有引入Hutool却可以继承父项目的Hutool,说明父子工程创建成功了!

子项目的pom.xml多了一个父项目依赖

<parent>
    <groupId>com.javaxbfs</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

父项目的pom.xml多了一个module

  <modules>
     <module>child-one</module>
  </modules>
posted on 2023-03-14 14:05  剽悍一小兔  阅读(21)  评论(0编辑  收藏  举报  来源