Spring Boot -01- 快速入門篇(圖文教程)
Spring Boot -01- 快速入門篇(圖文教程)
今天開始不斷整理 Spring Boot 2.0 版本學習筆記,大家可以在部落格看到我的筆記,然後大家想看視訊課程也可以到【慕課網】手機 app,去找【Spring Boot 2.0 深度實踐】的課程,令人開心的是,課程完全免費!
什麼是 Spring Boot?
Spring Boot 是由 Pivotal 團隊提供的全新框架。Spring Boot 是所有基於 Spring Framework 5.0 開發的專案的起點。Spring Boot 的設計是為了讓你儘可能快的跑起來 Spring 應用程式並且儘可能減少你的配置檔案。
設計目的:用來簡化新 Spring 應用的初始搭建以及開發過程。
從最根本上來講,Spring Boot 就是一些庫的集合,它能夠被任意專案的構建系統所使用。它使用 “習慣優於配置” (專案中存在大量的配置,此外還內建一個習慣性的配置)的理念讓你的專案快速執行起來。用大佬的話來理解,就是 spring boot 其實不是什麼新的框架,它預設配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架,總結一下及幾點:
(1)為所有 Spring 開發提供一個更快更廣泛的入門體驗。
(2)零配置。無冗餘程式碼生成和XML 強制配置,遵循“約定大於配置” 。
(3)集成了大量常用的第三方庫的配置, Spring Boot 應用為這些第三方庫提供了幾乎可以零配置的開箱即用的能力。
(4)提供一系列大型專案常用的非功能性特徵,如嵌入式伺服器、安全性、度量、執行狀況檢查、外部化配置等。
(5)Spring Boot 不是Spring 的替代者,Spring 框架是通過 IOC/">IOC 機制來管理 Bean 的。Spring Boot 依賴 Spring 框架來管理物件的依賴。Spring Boot 並不是Spring 的精簡版本,而是為使用 Spring 做好各種產品級準備
Spring Boot 在應用中的角色
Spring Boot 是基於 Spring Framework 來構建的,Spring Framework 是一種 J2EE 的框架( ofollow,noindex" target="_blank">什麼是 J2EE? )
Spring Boot 是一種快速構建 Spring 應用
Spring Cloud 是構建 Spring Boot 分散式環境,也就是常說的雲應用
Spring Boot 中流砥柱,承上啟下
環境準備
- (1)JDK 環境必須是 1.8 及以上,傳送門: jdk1.8.191 下載
- (2)後面要使用到 Maven 管理工具 3.2.5 及以上版本,所以會先介紹 Maven 的安裝與配置
- (3)開發工具建議使用 IDEA,也可以 MyEclipse,為了實現一站式服務,傳送門:
- IDEA 破解(原文是PyCharm的,步驟完全一樣,Webstorm 也可以破解)
- MyEclipse 2018 安裝與破解
Maven 安裝與環境變數配置
(1)Maven 安裝:
- 在官網下載:http://maven.apache.org/download.cgi
(2)Maven 配置環境變數:
解壓到一個路徑,然後配置環境變數:
- 新建變數名:MAVEN_HOME 變數值:D:\server\apache-maven-3.6.0(這是我的 MAVEN 路徑)
- 編輯變數名:Path 在最前面加上:%MAVEN_HOME%\bin
(3)檢查是否配置成功:
在命令列輸入:
mvn -V
然後會一大堆東西:

(4)配置 maven 倉庫:
1.開啟 maven 資料夾下的 config 資料夾下的 settings.xml;
2.找到 localRepository 標籤,此時是被註釋掉的,我們解除註釋,然後配置一個路徑,例如:D:/space/MavenRepository/maven_jar,這樣以後 MAVEN 管理下載的jar 包都會在這個路徑下。
【注意】:注意結點的位置,先找到註釋掉的部分,貼在下面
<localRepository>D:\space\MavenRepository\maven_jar</localRepository>
3.配置遠端倉庫,找到 mirrors 標籤
<!--遠端倉庫--> <mirror> <id>aliyun</id> <name>aliyun Maven</name> <mirrorOf>*</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
4.當然我們需要先建這樣一個目錄結構,然後還要把settings.xml 複製一份到 D:/space/MavenRepository 下
(5)在 idea 配置 maven:
點選【File】>【Settings】>搜尋【Maven】,按截圖配置安裝目錄和選擇剛剛 settings 配置檔案;

選擇完settings之後,本地倉庫自動改成settings檔案中配置的;點選apply,再點選ok即配置完成。
使用 idea 快速搭建 Spring Boot
第一步:新建 Spring Initializr 專案:
(1)選擇 Spring Initializr
(2)選擇 SDK,點選【new】這裡就是使用 JAVA SDK 要求版本 1.8+,選擇你預設安裝在 C:\Program Files\Java\jdk1.8.0_191 目錄:

(3)然後選擇預設的 url (不用管)點選【Next】:
(4)然後填寫一下專案的資訊:
(5)先勾選上 Web 依賴:

(7)選擇好專案的位置,點選【Finish】:
(7)如果是第一次配置 Spring Boot 的話可能需要等待一會兒 IDEA 下載相應的 依賴包,預設建立好的專案結構如下:
專案結構還是看上去挺清爽的,少了很多配置檔案,我們來了解一下預設生成的有什麼:
- SpringbootApplication: 一個帶有 main() 方法的類,用於啟動應用程式
- SpringbootApplicationTests:一個空的 Junit 測試了,它載入了一個使用 Spring Boot 字典配置功能的 Spring 應用程式上下文
- application.properties:一個空的 properties 檔案,可以根據需要新增配置屬性
- pom.xml: Maven 構建說明檔案
第二步:HelloController
在 【main/java/com.xpwi.springboot】包下新建一個【HelloController】:
package com.xpwi.springboot; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 測試控制器 * * @author: @肖朋偉CSDN * @create: 2018-11-18 */ @RestController public class HelloController { @RequestMapping("/hello") public String hello() { return "Hello Spring Boot!"; } }
第三步:利用 IDEA 啟動 Spring Boot
(1)我們回到 SpringbootApplication 這個類中,然後右鍵點選執行:
(2)會提示 Maven 導包,點選 import

(3)注意:我們之所以在上面的專案中沒有手動的去配置 Tomcat 伺服器,是因為 Spring Boot 內建了 Tomcat
等待一會兒就會看到下方的成功執行的提示資訊:
(4)此時,可以看到我們的 Tomcat 執行在 8080 埠,我們來訪問下面地址試一下:
http://localhost:8080/hello
Spring Boot 專案檔案介紹
一、解析 pom.xml 檔案:
(1)讓我們來看看預設生成的 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xpwi</groupId> <artifactId>springboot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <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>
(2)我們可以看到一個比較陌生一些的標籤
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
有了這個,當前的專案才是 Spring Boot 專案,spring-boot-starter-parent 是一個特殊的 starter ,它用來提供相關的 Maven 預設依賴,使用它之後,常用的包依賴就可以省去 version 標籤。
關於具體 Spring Boot 提供了哪些 jar 包的依賴,我們可以檢視本地 Maven 倉庫下:\repository\org\springframework\boot\spring-boot-dependencies\2.1.0.RELEASE\spring-boot-dependencies-2.1.0.RELEASE.pom 檔案來檢視,挺長的...
二、應用入口類 SpringbootApplication.java
Spring Boot 專案通常有一個名為 *Application 的入口類,入口類裡有一個 main 方法, 這個 main 方法其實就是一個標準的 Javay 應用的入口方法。
@SpringBootApplication是 Spring Boot 的核心註解,它是一個組合註解,該註解組合了: @Configuration 、 @EnableAutoConfiguration、@ComponentScan; 若不是用 @SpringBootApplication 註解也可以使用這三個註解代替。
- 其中, @EnableAutoConfiguration 讓 Spring Boot 根據類路徑中的 jar 包依賴為當前專案進行自動配置 ,例如,添加了 spring-boot-starter-web 依賴,會自動新增 Tomcat 和 Spring MVC 的依賴,那麼 Spring Boot 會對 Tomcat 和 Spring MVC 進行自動配置。
- Spring Boot 還會自動掃描 @SpringBootApplication 所在類的同級包以及下級包裡的 Bean ,所以入口類建議就配置在 grounpID + arctifactID 組合的包名下(這裡為 com.xpwi.springboot 包)
三、Spring Boot 的配置檔案:
Spring Boot 使用一個全域性的配置檔案 application.properties 或 application.yml,放置在【src/main/resources】目錄或者類路徑的 /config 下。
Spring Boot 不僅支援常規的 properties 配置檔案,還支援 yaml 語言的配置檔案。yaml 是以資料為中心的語言,在配置資料的時候具有面向物件的特徵。
Spring Boot 的全域性配置檔案的作用是對一些預設配置的配置值進行修改。
修改 properties 配置檔案例項:
(1)開啟 resources 下的 application.properties
(2)在這裡我們可以設定訪問的埠,將 Tomcat 預設埠設定為 8080 (預設的不修改) ,並將預設的訪問路徑從 “/” 修改為 “/cn” 時,再訪問 http://localhost:8080/ 是什麼都沒有的,此時要訪問 hello 是要使用 http://localhost:8080/cn/hello
注意:如果是 yml 需要在 “:” 後加一個空格,幸好 IDEA 很好地支援了 yml 檔案的格式有良好的程式碼提示;
我們可以自己配置多個屬性
(3) 使用 yml 檔案作為配置檔案 ,我們直接把 .properties 字尾的檔案刪掉,使用 .yml 檔案來進行簡單的配置
(4)在然後使用在我們的 HelloController.java 類中使用 @Value 來獲取配置屬性,程式碼(請看註釋):
package com.xpwi.springboot; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 測試控制器 * * @author: @肖朋偉CSDN * @create: 2018-11-18 */ @RestController public class HelloController { // 獲取.yml 檔案中值 @Value("${name}") private String name; // 獲取 age @Value("${csdnUrl}") private String csdnUrl; //路徑對映,對應瀏覽器訪問的地址,訪問該路徑則執行下面函式 @RequestMapping("/hello") public String hello() { return name + " CSDN 部落格:"+ csdnUrl; } }
(5)重啟 Spring Boot ,輸入地址:http://localhost:8080/hello 能看到正確的結果:
【注意】:此時如果你第一次使用 idea 出現中文亂碼,解決辦法:
(6)【注意】: 我們並沒有在 yml 檔案中註明屬性的型別,而是在使用的時候定義的。你也可以在配置檔案中使用當前配置:
(7)任然可以得到正確結果:
(8)【問題】: 這樣寫配置檔案繁瑣而且可能會造成類的臃腫,因為有許許多多的 @Value 註解。
可以,封裝配置資訊
封裝配置資訊使用方法:
(1)application.yml 檔案內容如下:

(2)新建 author.java 和 HelloController.java 同級,內容如下:
package com.xpwi.springboot; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "author") public class author { privateString name; privateString csdnUrl; public String getCsdnUrl() { return csdnUrl; } public void setCsdnUrl(String csdnUrl) { this.csdnUrl = csdnUrl; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
(3)此時可能會報錯,如果報錯,開啟 pom.xml 檔案,新增內容(注意位置):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
(4)重新編寫 HelloController 類,內容如下:
package com.xpwi.springboot; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 測試控制器 * * @author: @肖朋偉CSDN * @create: 2018-11-18 */ @RestController public class HelloController { // 獲取.yml 檔案中值 //@Value("${name}") //private String name; // 獲取 age //@Value("${csdnUrl}") //private String csdnUrl; @Autowired private author author; //路徑對映,對應瀏覽器訪問的地址,訪問該路徑則執行下面函式 @RequestMapping("/hello") public String hello() { return "名字:" + author.getName() + " 地址:" + author.getCsdnUrl(); } }
(5)重啟 Spring Boot,訪問瀏覽器:
http://localhost:8080/hello
【提示】:我們可以把配置資訊封裝成一個類,首先在我們的 name 和 age 前加一個 student 字首,然後新建一個 StudentProperties 的類用來封裝這些資訊,並用上兩個註解:
- @Component:表明當前類是一個 Java Bean
- @ConfigurationProperties(prefix = "author"):表示獲取字首為 author 的配置資訊