2. 关于Spring Boot项目的结构
通过IntelliJ IDEA创建的Spring Boot项目,默认的项目结构:
-
[.idea]
:是IntelliJ IDEA管理项目时自动生成的一些文件,其中将包括你在使用过程中的一些配置,此文件夹不需要手动管理,如果开发过程中,出现莫名其妙的错误(例如某个文件确实是存在的,但是提示找不到),可以选择删除此文件夹并重启IntelliJ IDEA,当然,删除此文件夹可能会丢失你在使用过程中的一些配置(例如配置的Database面板) -
[.mvn]
:用于存放支持执行Maven相关命令的文件,此文件夹不需要手动管理 -
[src]
:项目的源代码文件夹 -
.gitignore
:此文件名的意思是“git ignore”,用于配置使用GIT时忽略的文件或文件夹 -
HELP.md
:默认的项目描述文件,也可以改名为README.md
,通常用于编写项目的介绍,例如这是一个什么样的项目、此项目应该如何启动、使用过程中有哪些注意事项等,是由开发者自行编写的,并且,在大多数GIT平台上,在项目的主页默认为显示此文件的内容 -
项目名称.iml
:IntelliJ IDEA管理此模块的文件,此文件不需要手动管理 -
mvnw
和mvnw.cmd
:执行Maven命令的程序文件 -
pom.xml
:Maven配置文件,主要用于配置:当前项目的父级项目、当前项目的基本信息、依赖项、插件等
3. 关于pom.xml
的配置
3.1. 关于<relativePath>
标签
关于<parent>
标签子级的<relativePath/>
标签,其作用是:指定父级项目的pom.xml
相对当前项目的位置,关于此项目有3种做法:
-
不写这个标签:从当前项目的文件夹的父级文件夹下查找,相当于配置为
<relativePath>../pom.xml</relativePath>
-
使用空标签(
<relativePath/>
):将从本地库(通常是你的.m2/repository
)查找父级项目的pom.xml
-
自定义父级
pom.xml
的位置,例如:<relativePath>父级pom.xml的位置</relativePath>
需要注意:<relativePath/>
标签只会影响项目打包,如果你不需要对项目进行打包,此标签的配置并不重要!在IntelliJ IDEA中直接运行项目并不受到此标签的影响!
3.2. 关于<dependencies>
标签
当使用聚合的Maven项目时,在父级项目的pom.xml
中,根标签下的<dependencies>
标签下配置的依赖项,将被各子级模块项目直接继承得到!即:只要在父级项目中配置的依赖项,子级项目中并不需要配置,就可以直接得到这些依赖项!
3.3. 关于<dependencyManagement>
标签
使用<dependencyManagement>
标签主要用于在父级项目中配置各依赖项的版本,并且,在子级项目中添加依赖时不配置版本号,使得同一个父级项目的各子级项目均使用相同版本的依赖项。
在父级项目的pom.xml
中,可以自行添加<dependencyManagement>
标签,在此标签下可以添加<dependencies>
标签,并在其下再添加依赖项,例如:
<dependencyManagement> <dependencies> <!-- 依赖项1 --> <!-- 依赖项2 --> <!-- …… …… --> <!-- 依赖项n --> </dependencies> </dependencyManagement>
当添加以上配置后,各子级项目并不会直接继承得到以上配置的依赖项,当子级需要某些依赖项时,仍需要在子级项目的pom.xml
中通过<dependencies>
进行配置,但是,不需要再填写版本号!
3.4. 关于spring-boot-maven-plugin
插件
如果当前项目是需要运行的,则需要添加此插件,反之,如果当前项目是不需要运行的,则不可以添加此插件,否则,将导致打包错误!
3.5. 关于<dependency>
子级的<scope>
标签
在<dependency>
标签下,通过<scope>
标签可以配置依赖项的作用域。
注意:如果没有配置<scope>
则依赖项的作用域不受限!
当<scope>
配置为test
时,表示当前依赖项仅用于测试,只能在src/test
下的代码中使用此依赖项,在src/main
下将不可用,并且,此依赖项不会参与项目的打包
当<scope>
配置为runtime
时,表示当前依赖项仅在运行时需要使用,编写源代码时不需要使用。
4. 添加必要的依赖项
当前项目所需的依赖项大致有:
-
spring-boot-starter-web
:支持Spring MVC编程 -
spring-boot-starter-validation
:支持Validation校验(检验方法的参数的基本格式) -
spring-boot-starter-test
:测试 -
lombok
:简化POJO类的代码 -
mysql:mysql-connector-java
/com.mysql:mysql-connector-j
:MySQL数据库驱动 -
mybatis-spring-boot-starter
:MyBatis整合Spring Boot编程 -
knife4j-spring-boot-starter
:在线API文档
所以,在tmall-server
的pom.xml
中进行依赖管理:
<!-- 属性配置 --> <properties> <java.version>1.8</java.version> <spring-boot.version>2.5.0</spring-boot.version> <mybatis-spring-boot.version>2.2.2</mybatis-spring-boot.version> <mysql.version>8.0.27</mysql.version> <knife4j-spring-boot.version>2.0.9</knife4j-spring-boot.version> <lombok.version>1.18.20</lombok.version> </properties> <!-- 依赖管理:主要用于管理各依赖项的版本 --> <dependencyManagement> <!-- 多个依赖项 --> <dependencies> <!-- Spring Boot支持Spring MVC编程及相关的依赖项 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> </dependency> <!-- Spring Boot支持Validation校验的依赖项 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>${spring-boot.version}</version> </dependency> <!-- Mybatis整合Spring Boot的依赖项 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot.version}</version> </dependency> <!-- MySQL的依赖项 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- Knife4j Spring Boot:在线API文档 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>${knife4j-spring-boot.version}</version> </dependency> <!-- Lombok的依赖项,主要用于简化POJO类的编写 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> <!-- Spring Boot支持测试的依赖项 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring-boot.version}</version> </dependency> </dependencies> </dependencyManagement>
接下来,你可以在实际编写代码的项目中,按需添加各依赖项。