Mock平臺2-Java Spring Boot框架基礎知識

MrZ大奇發表於2022-03-12

微信搜尋【大奇測試開】,關注這個堅持分享測試開發乾貨的傢伙。

認識Spring Boot

在N年前的大學時代想要開發一個Web服務使用的還是SSH框架(struts+spring+hibernate)尤其是Spring這塊需要進行大量的配置工作,為了簡化應用搭建和開發過程出現了Sprint Boot全新開源框架,且功能更加豐富,效能上更加穩定健壯,還提供了大量開箱即用(out-of-the-box)的依賴模組,使用起來更加簡單高效,尤其是這幾年在網際網路微服務的應用上熱度很高。

特性

  • 獨立的 Spring 應用程式
  • 直接嵌入 Tomcat、Jetty 或 Undertow等容器(無需部署 WAR 檔案)
  • 提供 'starter' 核心簡化構建配置
  • 儘可能多的自動配置 Spring 和 3rd 方庫
  • 提供已整合的產品功能,例如指標、健康檢查和外部化配置
  • 完全無需程式碼生成,無需 XML 配置

Starter

Sprint Boot真正少量配置甚至零配置使用各種元件的核心,它將日常應用研發中的各種場景都抽取出來做成獨立的 starter(啟動器),使用的時只需要在 Maven 中引入 starter 依賴,SpringBoot 就能自動掃描到要載入的資訊並啟動相應的預設配置。當然也可以自定義修改配置,除了官方Starter還有第三方技術提供,更可以自己開發。

 

總之在個人開發體驗上來說,在如此簡單高效+JAVA語言穩定開發的特性下,對於獨立Server的服務應用開發相比Python我更願意用Spring Boot 框架進行開發,下面就參考官方給出一個Demo例項。

 

不過開始實踐之前還需要注意以下幾點

  1. 本篇適合有一點JAVA語言基礎的小白,以前寫過Spring Boot專案的可忽略看後續開發篇文章
  2. 系列文章不做技術展開和深入講解,只做到應用的層面的講解
  3. 示例和專案開發需要提前搭建好依賴環境
    1. 環境: Java JDK 1.8.x 、Maven 3.x
    2. 資料庫:Myql 5.7+
    3. IDE:IntelliJ IDEA / Eclipse

搭建一個API專案

專案建立

初始化一個Spring Boot 應用兩種方式,官方IDE 

方式一:官方初始化專案包

Step1. 通過訪問 https://start.spring.io/ 選擇開發選項和新增依賴包一鍵生成應用包。

注意本地JDK裝的是1.8.X版本,所有Java的選項需要改成8,然後點選GENERATE就會自動下載一個按照選項配置生成的專案包。

 

Step2. 解壓到某路徑下,開啟IDEA匯入專案,選擇到 pom.xml -> Open As Project -> Trust Project 匯入包後等待maven依賴下載入完成。

 

方式二:IDEA建立Sprint Boot

新建一個專案(如果IDEA是最新版,請在上一個專案中File->Close project 才會進入到專案管理視窗),New Project -> Spring Initializr 選項內容如圖所示。

 

下一步Next 選擇版本和新增依賴,點選Finish完成建立。

 

最終兩種方式都會建立出如下的結構的 Spring Boot 應用專案

  

目錄結構說明

|-/src/mian/java 主開發程式碼和程式入口

|-/src/mian/resources 配置或靜態檔案資源區

|-/src/mian/resources/application.properties預設屬性配置檔案

|-/src/test 測試程式碼和測試初始化入口

|-pom.xml應用Maven等配置檔案

 

依賴包說明

  • spring-boot-starter-web 開發Web應用的模組
  • spring-boot-starter-actuator 程式監控器模組
  • spring-boot-starter-test 預設引用 測試模組 如JUnit
  • spring-boot-starter 預設引用核心模組,如果引用了starter-web此依賴自動包含在其中,可以不在專案中顯示引用。 

實際開發中還會為建立不同模式的目錄結構比如MVC,其他的依賴包新增也都會像圖中選中部分一樣方式隨時新增即可。

專案執行

依賴全部初始化完成後,其實暫時不需要編寫任何程式碼就能執行,直接點選IDEA的工具欄Run或Debug按鈕。

 

或通過 Terminal 執行 Maven命令列執行應用。

mvnw spring-boot:run

因為一開始新增了監控依賴包,所以可以直接訪問這個介面 http://localhost:8080/actuator 看到一些可訪問的介面,選擇 /health 健康檢檢視下服務狀態為 UP 服務正常。

 

編寫程式碼

接下來開發第一個自己的介面,在 /src/mian/java 先建立個資源返回類 HelloEntity.java用於JSON格式的資料返回,code 表示狀態碼,content表示內容。

package com.daqi.ideademo;

public class HelloEntity {
    private Integer code;
    private String content;
    
    public HelloEntity(Integer code, String content) {
        this.code = code;
        this.content = content;
    }
    
    public long getCode() {
        return code;
    }
    
    public String getContent() {
        return content;
    }
}

 

再建立一個控制器類,用於實現API Web服務,識別處理HTTP請求通過 @RestController包含@Controller@ResponseBody )註解標記為控制類,通過@GetMapping 註解標記GET方法請求,並給定一個介面路徑。

package com.daqi.ideademo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/api/sayHello")
    public HelloEntity sayHello(@RequestParam(value = "content") String content){
        String respContent = "你好,".concat(content);
        return new HelloEntity(200, respContent);
    }
}

@RequestParam指定了一個介面請求Params引數,sayHello程式碼中返回code=200,content=格式化接收引數的內容字串。

 

以上內容不必過多糾結,後邊的分享中在用到的時候都會進行講解,這塊內容照著做有個整體印象即可

執行和測試

 

 

在執行程式之前先對入口程式做個簡單解釋說明

@SpringBootApplication是一個複合註釋,包含以下內容:

  • @Configuration: 將類標記為應用程式上下文的 bean 源。
  • @EnableAutoConfiguration:告訴 Spring Boot 根據類路徑設定、其他 bean 和各種屬性設定開始新增 bean。例如,如果spring-webmvc位於類路徑上,則此註釋將應用程式標記為 Web 應用程式並啟用關鍵行為,例如設定DispatcherServlet.
  • @ComponentScan: 開啟自動掃描功能,告訴 Spring 在包中查的元件、配置和服務

其中 main() 方法使用 Spring Boot 的SpringApplication.run()方法來啟動應用程式。

 

介面測試

重新執行 mvnw spring-boot:run或 IDEA 執行按鈕,編譯重啟服務,通過PostMan做個介面帶參請求測試。

 

 測試結果如圖,正確按照預期給予返回結果。

 

至此一個簡單的後端服務就搞定了,你學會了嗎?如果著急想提前惡補 JAVA Spring Boot 知識的,推薦一個專項學習導航網站,最後希望你學過後有所收穫,未來不斷成長,喜歡就多多支援實戰原創吧!

 

推薦學習

Spring Boot 學習導航 http://springboot.fun/

資料參考

[1] https://spring.io/guides/gs/rest-service/

[2] http://www.ityouknow.com/spring-boot.html

關於後續更多進展和分享歡迎持續關注公眾號或部落格。

相關文章