spring_boot
⼀個使⽤了 Spring Boot 的項⽬⼯程,本質上來說和只使⽤ Spring Framework 的⼯程 是⼀樣的,如果使⽤ Maven 來管理,那它就是個標準的 Maven ⼯程,⼤概的結構就 像下⾯這樣。
|-pom.xml
|-src
|-main
|-java
|-resources
|-test
|-java
|-resources
- pom.xml 中管理了整個項⽬的依賴和構建相關的信
- src/main 中是⽣產的 Java 程式碼和相關資源⽂件;
- src/test 中是測試的 Java 程式碼和相關資源⽂件。
POM檔案分為以下幾個部分:
- ⼯程⾃⾝的 GroupId 、 ArtifactId 與 Version 等內容定義;
- ⼯程繼承的 org.springframework.boot:spring-boot-starter parent 定義;
- <dependencies/> 依賴項定義;
構建相關的配置定義。 org.springframework.boot:spring-boot-starter-parent ⼜繼承了 org.springframework.boot:spring-boot-dependencies ,它透過
定義了⼤量的依賴項,有了 的加持,在我們⾃⼰的⼯程中,只需要在 中寫⼊依賴項的 和 .
用maven建立一個SpringBoot專案
基礎配置:
JDK1.8+IDEA2021版本+maven3.3.9
1.什麼是Maven?
Maven是一個專案管理工具,它包含了一個物件模型。一組標準集合,一個依賴管理系統。和用來執行定義在生命週期階段中外掛目標和邏輯。
核心功能 :Maven的核心功能是合理敘述專案間的依賴關係,通俗點 就是透過pom.xml檔案的配置獲取jar包不用手動的去新增jar包,,這個pom.xml包我後面會敘述,不過已經學習過maven的 人應該對這個很熟悉。其本質就是透過配置pom.xml來獲取jar包,當然這是在該專案必須是maven專案的前提下。那麼什麼是maven專案
透過圖解可以發現maven工程不直接將jar包匯入到工程中,而是透過再pom.xml中新增所需的jar包的座標,這樣就避免了jar直接引入進來,在需要用到jar包的時候,只要查詢pom.xml檔案,再透過pom.xml中的座標,到一個專門用於存放jar包的倉庫中根據座標從而找到這些jar包,再把這些jar包拿去執行
透過 pom.xml 檔案配置要引入的 jar 包的座標,再讀取座標併到倉庫中載入 jar 包,這 樣我們就可以直接使用 jar 包了,為了解決這個過程中速度慢的問題,maven 中也有索引的概念,透過建立索引,可以大大提高載入 jar 包的速度,使得我們認為 jar 包基本跟放在本地的工程檔案中再讀取出來的速度是一樣的。這個過程就好比我們查閱字典時,為了能夠加快查詢到內容,書前面的目錄就好比是索引,有了這個目錄我們就可以方便找到內容了,一樣的在 maven 倉庫中有了索引我們就可以認為可以快速找到 jar 包。
2. 專案
現在我們繼續建立新專案
配置maven
建立好之後我們可以看到只有這麼一些檔案內容和檔案目錄,現在我們要做的第一件事就是配置maven
檔案->設定
裡面找到maven配置,紅框裡面的就是需要我們手動配置的地方。
這是我的配置目錄,這個maven倉庫就是存放專案需要的各種依賴的地方。並且我們要在系統變數裡新增才能使用
因為我們使用的是本地倉庫,在這個settings檔案裡可能預設使用的是伺服器端的倉庫,所以還要在程式碼裡改一下
這樣的話,專案所有需要的依賴就準備好了
建立新啟動項
現在我們在專案裡新建了一個模組module1,在pom檔案裡新增依賴項
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
之後我們新建軟體包來存放啟動類
在導包的時候遇到這種問題就清除一下快取然後重新啟動。
package com.ivanlee.springboot;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.SpringApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
建立application.yml配置檔案:設定埠號
這樣的話直接執行我們的啟動類就可以訪問網頁了
訪問剛才yaml檔案裡的配置,能得到一張空白頁面,因為還沒有寫controller相關的東西,所以什麼都沒有
controller
需要注意的是controller的類檔案必須要放在和啟動類同級以及更低一級的目錄裡面,不能比啟動類高,否則啟動時將無法掃描到controller裡面的路徑導致404.
package com.ivanlee.springboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/regina")
public class FirstController {
@GetMapping("/127")
public String test(){
System.out.println("hello world");
return "hello world";
}
}
@RestController 和 @Controller 是 Spring Framework 中用於定義控制器的註解。
@RestController 是一個組合註解,它結合了 @Controller 和 @ResponseBody 註解的功能(就相當於把兩個註解組合在一起)。在使用 @RestController 註解標記的類中,每個方法的返回值都會以 JSON 或 XML 的形式直接寫入 HTTP 響應體中,相當於在每個方法上都新增了 @ResponseBody 註解。
@Controller 註解標記的類則是傳統的控制器類。它用於處理客戶端發起的請求,並負責返回適當的檢視(View)作為響應。在使用 @Controller 註解的類中,通常需要在方法上使用 @ResponseBody 註解來指示該方法的返回值要作為響應的主體內容,而不是解析為檢視。簡而言之,@RestController 適用於構建 RESTful 風格的 API,其中每個方法的返回值會直接序列化為 JSON 或 XML 資料併傳送給客戶端。而 @Controller 適用於傳統的 MVC 架構,它負責處理請求並返回相應的檢視。(@RestController下的方法預設返回的是資料格式,@Controller註解標註的類下面的方法預設返回的就是以檢視為格式)
訪問該路徑便得到了一個前端的響應。如果一直髮生404,那麼可以點選maven裡面的clean按鈕,把之前的錯誤匯入清掉再繼續。