從本篇部落格開始,我們開始進入Spring Boot的世界,它的出現使Spring的開發變得更加簡潔,因此一經推出受到眾多程式設計師的喜愛。
作為Spring Boot系列的第一篇部落格,我們先來講解下如何搭建Spring Boot專案。
如果你直接就使用的是Spring Boot,建議你有時間可以學習下Spring,這樣更能體會到Spring Boot帶來的便利。
Spring系列部落格地址:www.cnblogs.com/zwwhnly/cat…。
1. 搭建Spring Boot專案的2種方式
1.1 方式1:使用官網搭建
首先,在瀏覽器中,輸入 start.spring.io/,會看到如下介面:
從上圖可以看出,Project預設值是Maven Project,Language預設值是Java,Spring Boot預設版本是2.1.9,因為符合我們的需求,所以這3項我們不做修改。
然後填寫專案資訊,即Project Metadata項,如下所示:
上圖中的Group,可理解為組織,一般為域名反過來,如果域名是zwwhnly.com,這裡就填com.zwwhnly。
Artifact,可理解為專案名,比如我這裡填寫的是springboot-action。
接著選擇依賴項,比如要新增Web依賴項,這裡可以按關鍵字搜尋Web依賴項,如下所示:
也可以按分類找到Web依賴項,如下所示:
不管以哪種方式新增,最終的結果都是下面這樣的:
最後,點選”Generate“按鈕生成專案程式碼:
解壓後的程式碼目錄如下圖所示:
從圖中可以看出,此處生成的其實就是一個簡單的基於Maven的專案,你可以使用自己喜歡的開發工具開啟該專案,比如IntelliJ IDEA。
1.2 方式2:使用IDEA搭建
首先,開啟開發工具IntelliJ IDEA,依次點選選單File--New--Project開啟新建專案對話方塊,先選中左側的“Spring Initializr”,然後選擇專案要使用的JDK版本,如1.8,點選"Next"按鈕:
按照下圖中的提示填寫好專案資訊、打包方式、Java版本等資訊,點選“Next"按鈕:
選擇專案要使用的依賴項(如Spring Web)以及Spring Boot的版本(如2.1.9),點選”Next“按鈕:
確認好專案名稱和專案要儲存的路徑,點選“Finish"按鈕,如果儲存的路徑不存在,會提示是否自動建立該目錄,點選“OK”即可:
建立好的專案結構圖如下所示:
Maven依賴樹如下所示:
2. pom.xml講解
預設生成的pom.xml檔案如下所示:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zwwhnly</groupId>
<artifactId>springboot-action</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-action</name>
<description>Spring Boot Action Code</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
複製程式碼
關於pom.xml的整個講解,可以參考我之前寫的部落格:Spring入門(四):使用Maven管理Spring專案 ,這裡我們只講解下該檔案和之前不同的地方。
第1個值得注意的地方是檔案中的parent標籤:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
複製程式碼
該標籤用於新增Spring Boot的父級依賴,其中spring-boot-starter-parent是一個特殊的starter,它用來提供相關的Maven預設依賴,使用它之後,常用的包依賴可以省去version標籤。
舉個具體的例子,我們往pom.xml中新增如下依賴:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
</dependency>
複製程式碼
和預設的2個依賴一樣,我們並未指定該依賴的version版本,但是在Maven的依賴樹裡,卻能看到這3個依賴使用的版本,如下所示:
這就是parent標籤中引用spring-boot-starter-parent的作用,我們可以通過以下檔案來檢視它都提供了哪些依賴的預設版本資訊:
在該檔案中,我們可以找到spring-boot-starter-web、spring-boot-starter-test、amqp-client指定的版本資訊:
<properties>
<rabbit-amqp-client.version>5.4.3</rabbit-amqp-client.version>
</properties>
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>${rabbit-amqp-client.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
</dependencies>
複製程式碼
可以發現,指定的版本正是Maven依賴樹上看到的版本資訊。
不過可以通過指定version版本來覆蓋預設的版本,比如我們將amqp-client的依賴資訊修改為:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.0</version>
</dependency>
複製程式碼
此時在Maven依賴樹看到的amqp-client的版本就變為了5.7.0:
第2個值得注意的地方是,檔案中新增了Spring Boot的編譯外掛:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
複製程式碼
這裡我們也沒有指定version,所以使用的是預設的版本2.1.9.RELEASE(和上面使用amqp-client的原理一樣):
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.9.RELEASE</version>
</plugin>
複製程式碼
3. 簡單演示
找到啟動類SpringbootActionApplication(名稱一般為ArtifactId+Application),看到預設程式碼如下:
package com.zwwhnly.springbootaction;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootActionApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
複製程式碼
為方便演示,我們暫時在啟動類中新增一個Api介面:
package com.zwwhnly.springbootaction;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class SpringbootActionApplication {
@RequestMapping("/")
public String index() {
return "Hello Spring Boot";
}
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
複製程式碼
在啟動類中右鍵,然後選擇執行專案,看到如下資訊:
在瀏覽器中訪問http://localhost:8080/,會看到如下資訊:
@RestController註解和@RequestMapping註解其實是Spring MVC相關的註解,並不是Spring Boot特有的,關於Spring MVC的相關技術,可以檢視以下部落格:
4. 關閉Banner
其實剛剛啟動專案時我們已經看到了Spring Boot的Banner,那麼你不禁要問什麼是Spring Boot的Banner呢?
其實就是下圖中紅色標記的地方:
也許有人會覺得每次啟動都顯示這些資訊並沒有實際意義,那麼我們如何關閉它呢?
4.1 通過程式碼關閉
原始碼:
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
複製程式碼
修改後:
public static void main(String[] args) {
//SpringApplication.run(SpringbootActionApplication.class, args);
SpringApplication springApplication = new SpringApplication(SpringbootActionApplication.class);
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
複製程式碼
4.2 通過配置檔案關閉
預設情況下,新建的Spring Boot專案都有個空的application.properties配置檔案,可以新增如下配置:
spring.main.banner-mode=off
複製程式碼
重新啟動專案,效果如下圖所示:
5. 原始碼及參考
原始碼地址:github.com/zwwhnly/spr…,歡迎下載。
汪雲飛《Java EE開發的顛覆者:Spring Boot實戰》