兵马未动,粮草先行。在行军打仗之前,军队需要提前准备好粮草。同样地,在写代码之前,我们需要准备好软件环境及工具,做好码前准备。
软件环境
我们需要用到的主要软件及版本如下。
· 系统:Windows 10
· JDK: JDK 1.8
· IDE: Intellij IDEA 2020
· 构建工具:Maven 3.6.3
· Spring Boot: Spring Boot 2.5.6
· MySQL:MySQL 8.0及以上
以上是本书推荐的主要软件及版本,如果你是初学者,那么建议你采用与本书一致的软件及版本;如果你是比较有经验的开发者,那么可以根据自己的喜好来选择
大管家Maven
本书选择Maven作为Jar包管理及构建工具。原因很简单,它拥有领先的市场份额。图2-1展示了来自《2020 JVM生态报告》的数据。
pom文件
POM(Project Object Model,项目对象模型)是我们使用Maven的核心。pom文件使用XML语言编写,定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。pom文件示例
以上是一个pom文件示例,接下来我们一起学习几个常用的概念。
常用概念
坐标
坐标是Maven中非常重要的概念。我们在初中数学里就已经学习过这个概念,例如:(0,7)代表Y轴上距离原点7个单位的一个点。而我们在地理课里也 学 习 过 由 经 / 纬 度 组 成 的 坐 标 , 例 如 : ( 东 经 116°23'51" , 北 纬39°54'31")是天安门的坐标。那么Maven中的坐标是什么样子的呢?Maven中的坐标由以下3部分构成:
· groupId
· artifactId
· version
groupId代表组信息,通常是公司或者组织;artifactId是项目在组内的唯一标识;version就很简单了,代表项目的版本。我们通过一个具体示例来进一步理解
上面这个坐标代表Spring的Web模块,其版本为5.2.10.RELEASE。在Java中,可以说“万物皆对象”,而在Maven中,则可以说“万物皆坐标”。一切Jar包或pom文件都可以用一个唯一的坐标来标识。
依赖
我们可以通过坐标来声明一个Jar包或pom文件(War包不能被引用,这里不讨论),还可以通过坐标来引用其他的Jar包或pom文件。依赖管理是Maven最 重 要 的 功 能 之 一 , 项 目 依 赖 的 所 有 Jar 都 需 要 通 过 如 下 格 式 放 到<dependencies>标签下:
继承
Maven中的继承和Java中的继承类似,都通过<parent>标签来标明继承关系。继承后,子工程会将父工程的相关特性应用到子工程中。例如:
构建
构建(Build),也就是我们所说的编译打包的过程,是Maven另外一个重要的功能,用于将我们的工程打成Jar包或War包。Maven是通过集成插件的方式来实现构建功能的,可以根据不同的构建需求选择不同的插件。在Spring Boot项目中,默认使用spring-boot-mavenplugin插件进行构建,因为Spring Boot需要将工程打包成可执行的Jar文件,所以需要使用自己定制的构建插件。例如: