關於後續更多進展和分享歡迎持續關注公眾號或部落格。
Mock平台2-Java Spring Boot框架基礎知識
微信搜索【大奇測試開】,關注這個堅持分享測試開發乾貨的傢伙。
認識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實例。
不過開始實踐之前還需要注意以下幾點:
- 本篇適合有一點JAVA語言基礎的小白,以前寫過Spring Boot項目的可忽略看後續開發篇文章
- 系列文章不做技術展開和深入講解,只做到應用的層面的講解
- 示例和項目開發需要提前搭建好依賴環境
- 環境: Java JDK 1.8.x 、Maven 3.x
- 資料庫:Myql 5.7+
- IDE:IntelliJ IDEA / Eclipse
搭建一個API項目
項目創建
初始化一個Spring Boot 應用兩種方式,官方 和 IDE
方式一:官方初始化項目包
Step1. 通過訪問 //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
默認引用 測試模組 如JUnitspring-boot-starter
默認引用核心模組,如果引用了starter-web此依賴自動包含在其中,可以不在項目中顯示引用。
實際開發中還會為創建不同模式的目錄結構比如MVC,其他的依賴包添加也都會像圖中選中部分一樣方式隨時添加即可。
項目運行
依賴全部初始化完成後,其實暫時不需要編寫任何程式碼就能運行,直接點擊IDEA的工具欄Run或Debug按鈕。
或通過 Terminal 執行 Maven命令行運行應用。
mvnw spring-boot:run
因為一開始添加了監控依賴包,所以可以直接訪問這個介面 //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 學習導航 //springboot.fun/
資料參考
[1] //spring.io/guides/gs/rest-service/
[2] //www.ityouknow.com/spring-boot.html