Spring Boot是 Pivotal 團隊開發的、用于簡化 Spring 應用的開發的開源架構。其通過自動配置和習慣優于配置的理念,使得 Spring Boot 應用程式幾乎不需要繁瑣的 Spring 配置,極大的提高開發效率。
源代碼倉庫:
https://github.com/zhshuixian/learn-spring-boot-2《Spring Boot 2.X 實戰》(更新中)系列文章将分為如下幾個子產品,本小節将實戰如何建構 RESTful API,并自定義傳回資料和HTTP 傳回碼、以及給 API 接口傳入資料,下一小節将實戰 Spring Boot 整合 Log4j2 與 Slf4j 實作日志列印和輸出到檔案:

1、Spring Boot
Spring Boot 是快速建立、開發、運作 Spring 應用的開發架構,目的是讓開發者盡可能地減少 Spring 應用的配置,更加注重實際業務代碼的編寫。
Spring Boot 具有如下的特點
- 無需太多的手動配置,開箱即用,能夠快速建立、運作項目
- 内嵌 Tomcat 等,可以打包成 jar ,部署運作友善
- 為許多第三方開發庫提供了幾乎可以零配置的開箱即用的能力,如 Mybatis
- 提供了名額、健康檢查和外部化配置等特性
1.1 、Spring Boot 2.X 新特性
Spring Boot 2.X 依賴于 Spring Framework 5 架構,是以需要 JDK 8 及以上的版本,同時對 Kotlin 語言有了更好的支援。
- 基于 Spring Framework 5,Spring 5 的新特性均可以使用
- 支援 Java 8+、Kotlin、Groovy
- 支援 Web Flux 和嵌入式 Netty Server
- 支援各種元件響應式程式設計的自動化配置
- 更新了第三方依賴元件
1.2、Spring Boot 與 Spring 生态
從根本上來講,Spring Boot 不是對 Spring Framework 的增強和擴充,也不是用來替代 Spring 架構的。其功能就是友善整合、管理 Spring 或者第三方元件,如 Spring Data JPA、Tomcat 、Alibaba Druid 等,實作架構的快速整合和自動配置。可以形象地比喻成萬能膠水,你需要 Spring Data JPA 就把 JPA 粘上你的項目,你要用 Maybatis 就把Maybatis JPA 粘上你的項目即可,而你并不需要編寫太多的整合代碼或者配置,隻需要在依賴管理工具(Maven、Gradle)的配置檔案寫入相應的依賴即可。
2、搭建開發環境
2.1、OpenJDK
Spring Boot 依賴于 JDK 8 及以上的版本,在本文中選擇 OpenJDK 11。
從 OpenJDK 官網
http://jdk.java.net/archive/下載下傳對應系統的 OpenJDK 11,解壓和設定
JAVA_HOME
指向你的安裝目錄和把 安裝目錄下的 bin 檔案夾添加到
PATH
變量。目前最新的 OpenJDK 11 是 11.0.2 (build 11.0.2+9)。
2.2、IntelliJ IDEA Ultimate
IDEA 是功能強大的 Java 開發工具,雖然 IDEA Community 一樣可以用于開發 Spring 應用,但由于沒有原生支援 Spring 應用的開發,IDE 的配置和使用比較麻煩。這裡推薦你使用 IDEA Ultimate 付費版,其對 Spring Boot 應用開發提供良好的支援。Ultimate 提供了 30 天免費試用,同時對教育、開源開發者提供了免費的授權。
IDEA 下載下傳位址
https://www.jetbrains.com/idea/IntelliJ 教育授權計劃
https://www.jetbrains.com/zh/student/(隻要提供校園郵箱,國際學生證(ISIC)或是有效的證明檔案來驗證學生身份即可)
IntelliJ 開源項目申請免費授權
https://www.jetbrains.com/shop/eform/opensource(項目負責人或項目核心貢獻者)
3、建立 Spring Boot 項目
本文示例項目選用 Gradle,如果你使用的是 Maven,你可以手工建立一個基于 Maven 的 Spring Boot 項目,把 pom.xml ,mvnw,mvnw.cmd,.mvn 這些檔案拷貝到示例項目中,然後在 IDEA 初始化導入 Maven 項目,并把相關依賴包補齊。
3.1、 建立項目
打開 IDEA,點選“Create New Project”建立新的項目:
選擇“Spring Initializr”,確定“Project SDK”要選擇大于 JDK 8 的版本(點選“New”可以選擇剛剛配置的 OpenJDK 11 的目錄),點選“Next”:
“Type”選擇 Gradle(如果你想使用 Maven 則更改即可,其他不變),“Language”選擇 Java,“Packaging”打包方式選擇 Jar,“Java Version” 需要和你選擇的 JDK 版本一緻,點選 Next:
添加“Spring Web ”依賴,Spring Boot 版本在示例中選擇 2.2.4,然後Next:
選擇 Project 存儲目錄等,更改完成後直接 Finlsh 完成項目的建立,IDEA 會自動打開此項目:
打開項目後,IDEA 的右下角會出現“Gradle/Maven projects need to be imported”提示,點選 “Enable Auto-Import 即可”:
3.2、配置國内鏡像
Gradle 和Apache Maven 是自動化建構工具,用于管理項目的依賴、編譯、打包、文檔等資訊。如果你想在項目添加其他依賴,可以在此網站
https://mvnrepository.com/查詢所依賴包的 Maven 或者 Gradle 的依賴配置資訊,把它複制到 pom.xml 檔案的
<dependencies></dependencies>
元素或者 build.gradle 檔案的
dependencies { }
中即可。
IDEA 在建立項目的時候會自動下載下傳相應的自動化建構軟體和依賴,有時候由于網絡原因,無法下載下傳相關的資源等,需要手動下載下傳和配置使用國内的鏡像。
3.2.1、Gradle 項目
Gradle 項目使用 build.gradle 檔案管理項目依賴、編譯和打包等資訊。建立項目可能會遇到的問題有 Gradle 無法下載下傳、相關依賴包無法下載下傳。
Gradle無法下載下傳:
先使用 IDEA 打開 gradle 項目,會自動在
GRADLE_USER_HOME
建立相應的存放目錄,
GRADLE_USER_HOME
預設是使用者個人目錄下的 .gradle 檔案夾。如果 Gradle 下載下傳緩慢或者無法下載下傳的時候,可以使用如下方式手動下載下傳。
打開項目的 gradle/wrapper/gradle-wrapper.properties 檔案,将 distributionUrl 的連結複制到浏覽器下載下傳:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip
以 gradle-6.0.1-all.zip 為例,将下載下傳的檔案複制如下目錄,重新打開項目即可:
GRADLE_USER_HOME/wrapper/dists/gradle-6.0.1-all/99d3u8wxs16ndehh90lbbir67
使用阿裡雲鏡像
修改項目的 build.gradle 檔案,将 repositories 中的内容修改為如下,然後重新運作 Gradle:
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
mavenCentral()
}
3.2.2 Maven 項目
Maven 使用 pom.xml 來管理項目的依賴、編譯和打包等資訊。
安裝Maven 下載下傳位址
http://maven.apache.org/download.cgi,你需要下載下傳 Binary 二進制壓縮包,解壓到你的安裝目錄,并設定
M2_HOME
指向你的安裝目錄和把安裝目錄下的 bin 檔案夾添加到
PATH
變量,配置完成後,可以在控制台輸入指令查詢是否安裝成功:
mvn -v
打開
M2_HOME/conf/settings.xml
,将
<mirrors>
标簽裡的内容修改為如下:
<mirrors>
<mirror>
<id>aliyun</id>
<name>aliyun Maven</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
IDEA 設定 Maven home directory 打開 IDEA 設定,“Build,Execution,Deployment”-->“Build Tools”-->“Maven”,将 “Maven home directory” 設定為你的
M2_HOME
目錄,“User settings file”修改為剛剛修改的那個 settings.xml 檔案。
本小節主要介紹了 Spring Boot 和如何建立 Spring Boot 的項目。下一節内容将介紹如何運作 Spring Boot 項目并編寫一些簡單的 RESTful API。
我是小先,一個專注大資料、分布式技術的非斜杠青年,愛Coding,愛閱讀、愛攝影,更愛生活!