Spring Boot 第一个项目

1. 前言

Spring Boot 可以使用 Maven 构建,遵循 Maven 的项目结构规范,项目结构是模板化的,基本都一模一样。

模板化的东西可以自动生成,Spring 官方就提供了 Spring Initializr 。它能自动生成 Spring Boot 项目,我们直接导入到开发工具使用即可。

2. 生成 Spring Boot 项目

打开 Spring Initializr 网址 http://start.spring.io ,根据我们项目的情况填入以下信息。

图片描述

Spring Initializr 生成 Spring Boot 项目

这是第一次接触 Spring Initializr ,我们来详细了解界面上选项的作用。

1. 构建方式选择:此处我们选择 Maven Project 即可,表示生成的项目使用 Maven 构建。当然我们也可以发现,Spring Boot 项目亦可采用 Gradle 构建,目前 Spring Boot 主流的构建方式还是 Maven;
2. 编程语言选择:此处选择 Java 即可;
3. Spring Boot 版本选择: 2.x 版本与 1.x 版本还是有一些区别的,咱们学习肯定是选择 2.x 新版本。此处虽然选择了 2.2.6 版本,但是由于 2.2.6 版本刚推出没多久,国内一些 Maven 仓库尚不支持。后面我们手工改为 2.2.5 版本,便于使用国内 Maven 仓库快速构建项目;
4. 所属机构设置:Group 表示项目所属的机构,就是开发项目的公司或组织。因为公司可能会重名,所以习惯上采用倒置的域名作为 Group 的值。例如慕课网的域名是 imooc.com , 此处写 com.imooc 就行了;
5. 项目标识设置:Artifact 是项目标识,用来区分项目。此处我们命名为 spring-boot-hello ,注意项目标识习惯性地采用小写英文单词,单词间加横杠的形式。比如 Spring Boot 官方提供的很多依赖,都是 spring-boot-starter-xxx 的形式;
6. 项目名称设置:Name 是项目名称,保持与 Artifact 一致即可;
7. 默认包名设置:Package name 是默认包名,保持默认即可;
8. 打包方式选择:此处选择将项目打包为 Jar 文件;
9. 添加项目依赖:此处不必修改,我们直接在 pom.xml 中添加依赖更加方便。注意 pom.xml 就是 Maven 的配置文件,可以指定我们项目需要引入的依赖;
10. 生成项目:点击 Generate 按钮,即可按我们设置的信息生成 Spring Boot 项目了。

3. Spring Boot 项目结构分析

我们将下载的 zip 压缩包解压后导入开发工具,此处以 Eclipse 为例,依次点击 File-Import-Existing Maven Projects ,然后选择解压后的文件夹导入。

图片描述

Eclipse 导入 Spring Boot 项目

导入后项目结构如下图,我们逐一分析下他们的用途:

图片描述

Spring Boot 项目结构
  • 最外层的 spring-boot-wikis 表示工作集(working set),可以理解为项目分类。我们将 Spring Boot 学习项目都放入该工作集下,便于集中查看;
  • spring-boot-hello 是我们指定的项目名称;
  • src/main/java 是 Java 源代码目录,存放我们编写的 Java 代码;
  • src/main/resources 目录是静态资源目录,存放图片、脚本文件、配置文件等静态资源;
  • src/test/java 目录是测试目录,存放测试类。测试是非常重要的,从目录级别跟源代码同级,就能看出来测试的重要性;
  • target 目录存放我们打包生成的内容;
  • pom.xml 是项目的 Maven 配置文件,指定了项目的基本信息以及依赖项,Maven 就是通过配置文件得知项目构建规则的。

Tips: 此处有同学要发问了,不是说好 Spring Boot 没有配置文件吗?不要着急,Spring Boot 可以在没有配置文件时照常运行。但如果需要个性化功能的话,就会用到配置文件了。 Spring Boot 的配置文件使用非常简单,放心就是了!

4. pom.xml 详解

大家可能也发现了,到此刻为止,Spring Boot 项目也没啥新鲜的。都是之前了解过的东西,跟普通的 Maven 项目也没啥区别。

其实真正的变化在 pom.xml 中,我们马上打开瞧一瞧。因为 pom.xml 配置比较长,我们从头到尾分段解释下。

4.1 Maven 文档配置

这一段配置代码,其实是固定的格式,表示当前文档是 Maven 配置文档。

实例:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
</project>

4.2 Spring Boot 版本配置

这一段配置代码,指定使用 Spring Boot 2.2.5.RELEASE 版本 。如果我们要更换 Spring Boot 版本,只需要修改 <version></version> 标签中间的版本号部分即可。

实例:

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

4.3 项目信息配置

这一段配置代码,大家看到应该比较眼熟,内容即为之前使用 Spring Initializr 指定的项目信息。其中,groupId 是机构标识、artifactId 是项目标识,version 是版本号,name 是项目名称,description 是项目的简单描述。

实例:

	<groupId>com.imooc</groupId>
	<artifactId>spring-boot-hello</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring-boot-hello</name>
	<description>Demo project for Spring Boot</description>

Tips: name 是项目的名称,不用特别严谨。而 artifactId 是用来区分 group 下面的子项目的,需要保证严格唯一。一般情况下将 artifactId 和 name 设置成一样的就可以了。

4.4 依赖配置

接下来,这一段代码配置,负责指定 Spring Boot 项目中需要的依赖。 Spring Boot 有一些起步依赖,形如 spring-boot-starter-xxx 的样式。起步依赖整合了很多依赖项,后续我们慢慢了解即可。

实例:

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

Tips: 可以看到上面两个依赖我们并没有指定版本号,其实是因为 Spring Boot 2.2.5 已经有默认的依赖项版本号了。这是通过 Maven 父继承实现的,即 <parent> 标签配置部分,这个稍作了解即可。

4.5 插件配置

最后的这一段代码配置,指定了一个插件,用来构建、运行、打包 Spring Boot 项目。

实例:

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

5. 视频演示

6. 小结

本章先讲了 Spring Boot 项目的构建方法,然后大体描述了 Spring Boot 项目的结构和配置文件,让大家有一个总体的感性认识。

实际使用中, Spring Boot 是高度封装的,我们开箱即用即可。在学习阶段,用不着了解很多的原理。

就像你开汽车,会挂挡就行,不需要知道变速箱是啥工作原理。

框架封装的目的就是为了傻瓜式使用, Spring Boot 就是这样的一个傻瓜式工具框架。等哪一天用得很溜了,再去研究原理也不迟。