接下来的一段时间,我们将要来学习微服务,本着重实战的原则,你不需要去深究一些相关的原理,只要能跟着教程一步一步做下来,就可以快速地掌握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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2017-03-14 第五节 HTML&CSS -- 关于浮动和清除浮动的解说,以及两个大坑不要踩