Spring Boot 第一個項目
1. 前言
Spring Boot 可以使用 Maven 構(gòu)建,遵循 Maven 的項目結(jié)構(gòu)規(guī)范,項目結(jié)構(gòu)是模板化的,基本都一模一樣。
模板化的東西可以自動生成,Spring 官方就提供了 Spring Initializr 。它能自動生成 Spring Boot 項目,我們直接導(dǎo)入到開發(fā)工具使用即可。
2. 生成 Spring Boot 項目
打開 Spring Initializr 網(wǎng)址 http://start.spring.io
,根據(jù)我們項目的情況填入以下信息。
這是第一次接觸 Spring Initializr ,我們來詳細(xì)了解界面上選項的作用。
1. 構(gòu)建方式選擇:此處我們選擇 Maven Project 即可,表示生成的項目使用 Maven 構(gòu)建。當(dāng)然我們也可以發(fā)現(xiàn),Spring Boot 項目亦可采用 Gradle 構(gòu)建,目前 Spring Boot 主流的構(gòu)建方式還是 Maven;
2. 編程語言選擇:此處選擇 Java 即可;
3. Spring Boot 版本選擇: 2.x 版本與 1.x 版本還是有一些區(qū)別的,咱們學(xué)習(xí)肯定是選擇 2.x 新版本。此處雖然選擇了 2.2.6 版本,但是由于 2.2.6 版本剛推出沒多久,國內(nèi)一些 Maven 倉庫尚不支持。后面我們手工改為 2.2.5 版本,便于使用國內(nèi) Maven 倉庫快速構(gòu)建項目;
4. 所屬機(jī)構(gòu)設(shè)置:Group 表示項目所屬的機(jī)構(gòu),就是開發(fā)項目的公司或組織。因?yàn)楣究赡軙孛?,所以?xí)慣上采用倒置的域名作為 Group 的值。例如慕課網(wǎng)的域名是 imooc.com
, 此處寫 com.imooc
就行了;
5. 項目標(biāo)識設(shè)置:Artifact 是項目標(biāo)識,用來區(qū)分項目。此處我們命名為 spring-boot-hello
,注意項目標(biāo)識習(xí)慣性地采用小寫英文單詞,單詞間加橫杠的形式。比如 Spring Boot 官方提供的很多依賴,都是 spring-boot-starter-xxx
的形式;
6. 項目名稱設(shè)置:Name 是項目名稱,保持與 Artifact 一致即可;
7. 默認(rèn)包名設(shè)置:Package name 是默認(rèn)包名,保持默認(rèn)即可;
8. 打包方式選擇:此處選擇將項目打包為 Jar 文件;
9. 添加項目依賴:此處不必修改,我們直接在 pom.xml 中添加依賴更加方便。注意 pom.xml 就是 Maven 的配置文件,可以指定我們項目需要引入的依賴;
10. 生成項目:點(diǎn)擊 Generate 按鈕,即可按我們設(shè)置的信息生成 Spring Boot 項目了。
3. Spring Boot 項目結(jié)構(gòu)分析
我們將下載的 zip 壓縮包解壓后導(dǎo)入開發(fā)工具,此處以 Eclipse 為例,依次點(diǎn)擊 File-Import-Existing Maven Projects ,然后選擇解壓后的文件夾導(dǎo)入。
導(dǎo)入后項目結(jié)構(gòu)如下圖,我們逐一分析下他們的用途:
- 最外層的 spring-boot-wikis 表示工作集(working set),可以理解為項目分類。我們將 Spring Boot 學(xué)習(xí)項目都放入該工作集下,便于集中查看;
- spring-boot-hello 是我們指定的項目名稱;
- src/main/java 是 Java 源代碼目錄,存放我們編寫的 Java 代碼;
- src/main/resources 目錄是靜態(tài)資源目錄,存放圖片、腳本文件、配置文件等靜態(tài)資源;
- src/test/java 目錄是測試目錄,存放測試類。測試是非常重要的,從目錄級別跟源代碼同級,就能看出來測試的重要性;
- target 目錄存放我們打包生成的內(nèi)容;
- pom.xml 是項目的 Maven 配置文件,指定了項目的基本信息以及依賴項,Maven 就是通過配置文件得知項目構(gòu)建規(guī)則的。
Tips: 此處有同學(xué)要發(fā)問了,不是說好 Spring Boot 沒有配置文件嗎?不要著急,Spring Boot 可以在沒有配置文件時照常運(yùn)行。但如果需要個性化功能的話,就會用到配置文件了。 Spring Boot 的配置文件使用非常簡單,放心就是了!
4. pom.xml 詳解
大家可能也發(fā)現(xiàn)了,到此刻為止,Spring Boot 項目也沒啥新鮮的。都是之前了解過的東西,跟普通的 Maven 項目也沒啥區(qū)別。
其實(shí)真正的變化在 pom.xml 中,我們馬上打開瞧一瞧。因?yàn)?pom.xml 配置比較長,我們從頭到尾分段解釋下。
4.1 Maven 文檔配置
這一段配置代碼,其實(shí)是固定的格式,表示當(dāng)前文檔是 Maven 配置文檔。
實(shí)例:
<?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>
標(biāo)簽中間的版本號部分即可。
實(shí)例:
<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 項目信息配置
這一段配置代碼,大家看到應(yīng)該比較眼熟,內(nèi)容即為之前使用 Spring Initializr 指定的項目信息。其中,groupId 是機(jī)構(gòu)標(biāo)識、artifactId 是項目標(biāo)識,version 是版本號,name 是項目名稱,description 是項目的簡單描述。
實(shí)例:
<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 是項目的名稱,不用特別嚴(yán)謹(jǐn)。而 artifactId 是用來區(qū)分 group 下面的子項目的,需要保證嚴(yán)格唯一。一般情況下將 artifactId 和 name 設(shè)置成一樣的就可以了。
4.4 依賴配置
接下來,這一段代碼配置,負(fù)責(zé)指定 Spring Boot 項目中需要的依賴。 Spring Boot 有一些起步依賴,形如 spring-boot-starter-xxx
的樣式。起步依賴整合了很多依賴項,后續(xù)我們慢慢了解即可。
實(shí)例:
<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: 可以看到上面兩個依賴我們并沒有指定版本號,其實(shí)是因?yàn)?Spring Boot 2.2.5 已經(jīng)有默認(rèn)的依賴項版本號了。這是通過 Maven 父繼承實(shí)現(xiàn)的,即
<parent>
標(biāo)簽配置部分,這個稍作了解即可。
4.5 插件配置
最后的這一段代碼配置,指定了一個插件,用來構(gòu)建、運(yùn)行、打包 Spring Boot 項目。
實(shí)例:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
5. 視頻演示
6. 小結(jié)
本章先講了 Spring Boot 項目的構(gòu)建方法,然后大體描述了 Spring Boot 項目的結(jié)構(gòu)和配置文件,讓大家有一個總體的感性認(rèn)識。
實(shí)際使用中, Spring Boot 是高度封裝的,我們開箱即用即可。在學(xué)習(xí)階段,用不著了解很多的原理。
就像你開汽車,會掛擋就行,不需要知道變速箱是啥工作原理。
框架封裝的目的就是為了傻瓜式使用, Spring Boot 就是這樣的一個傻瓜式工具框架。等哪一天用得很溜了,再去研究原理也不遲。