SpringBoot基礎學習(一) SpringBoot概念、簡單案例實現、單元測試及熱部署講解

blayn發表於2021-05-31

SpringBoot概念

Spring優缺點分析

Spring優點

Spring是Java企業版(Java Enterprise Edition,JEE,也稱J2EE)的輕量級代替品,無需開發重量級的Enterprise JavaBean(EJB)。Spring為企業級Java開發提供了一種相對簡單的方法,通過依賴注入和麵向切面程式設計,用簡單的Java物件(Plain Old Java Object,POJO)實現了EJB的功能。

Spring缺點

雖然Spring的元件程式碼是輕量級的,但它的配置卻是重量級的。一開始,Spring用XML配置,而且是很多XML配 置。Spring 2.5引入了基於註解的元件掃描,這消除了大量針對應用程式自身元件的顯式XML配置。Spring 3.0引入了基於Java的配置,這是一種型別安全的可重構配置方式,可以代替XML。

所有這些配置都代表了開發時的損耗,因為在思考Spring特性配置和解決業務問題之間需要進行思維切換,所以編寫配置擠佔了編寫應用程式邏輯的時間。和所有框架一樣,Spring實用,但與此同時它要求的回報也不少。

除此之外,專案的依賴管理也是一件耗時耗力的事情。在環境搭建時,需要分析要匯入哪些庫的座標, 而且還需要分析匯入與之有依賴關係的其他庫的座標,一旦選錯了依賴的版本,隨之而來的不相容問題就會嚴重阻礙專案的開發進度。

SpringBoot解決Spring上述缺點

SpringBoot對上述Spring的缺點進行的改善和優化,基於約定優於配置的思想,可以讓開發人員不必在配置與邏輯業務之間進行思維的切換,全身心的投入到邏輯業務的程式碼編寫中,從而大大提高了開發的效率,一定程度上縮短了專案週期。

起步依賴

起步依賴本質上是一個Maven專案物件模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支援某項功能。

簡單的說,起步依賴就是將具備某種功能的座標打包到一起,並提供一些預設的功能

自動配置

SpringBoot的自動配置,指的是SpringBoot會自動將一些配置類的bean註冊進IOC容器,我們可以需要的地方使用@autowired或者@resource等註解來使用它

“自動”的表現形式就是我們只需要引我們想用功能的包,相關的配置我們完全不用管,SpringBoot會自動注入這些配置bean,我們直接使用這些bean即可

SpringBoot的優點

  • 簡單、快速、方便地搭建專案;
  • 對主流開發框架的無配置整合;
  • 極大提高了開發、部署效率。

SpringBoot簡單案例實現

案例需求:請求Controller中的介面,返回“你好 SpringBoot”到頁面。

(1)使用Spring Initializr方式構建SpringBoot專案

Spring Initializr是一個Web應用,它提供了基本的專案結構,能夠幫助我們快速構建一個基礎的SpringBoot專案。建立步驟如下所示:

開啟IDEA->File->New->Project:

Project SDK用於設定建立專案使用的SDK版本,這裡我選擇JDK1.8版本;在“choose starter service url(選擇初始化伺服器地址)”下使用預設的初始化伺服器地址“https://start.spring.io”進行SpringBoot專案建立(注意使用快速方式建立SpringBoot專案時,主機必須聯網)。

點選下一步:

點選Finish,即可完成SpringBoot專案的建立工作:

建立好的SpringBoot專案結構如下圖所示:

使用Spring Initializr方式構建的SpringBoot專案會預設生成專案啟動類、存放前端靜態資原始檔夾和模板頁面的資料夾、編寫專案配置的全域性配置資料夾以及進行單元測試的測試類。

(2)建立一個用於Web訪問的Controller

在com.hardy.springboot_demo下建立一個名為controller的包,在controller包下建立一個HelloController類,並編寫一個返回“你好 SpringBoot”的介面,程式碼如下:

@RestController // 該註解為組合註解,相當於Spring中 @Controller+@ResponseBody註解
public class HelloController {

    @RequestMapping(name="/demo", produces="application/json; charset=utf-8")
    public String demo(){
        return "你好 SpringBoot";
    }

}

其中 produces = "application/json; charset=utf-8" 是為了解決中文亂碼的問題。

(3)執行專案

點選執行按鈕:

訪問 http://localhost:8080/ 檢視結果:

單元測試與熱部署

(1)單元測試

開發中,每當完成一個功能介面或業務方法的編寫後,通常會藉助單元測試驗證功能是否正常。SpringBoot對專案的單元測試提供了很好的支援,在使用時,需要提前在專案的pom.xml檔案引入spring-boot-starter-test測試依賴啟動器,以便通過相關注解實現單元測試。

操作步驟如下:

1、引入spring-boot-starter-test測試依賴啟動器

在專案的pom.xml檔案引入spring-boot-starter-test測試依賴啟動器,示例程式碼如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

注意:使用Spring Initializr方式搭建的SpringBoot專案會自動加入spring-boot-starter-test測試依賴器,無需再手動新增。

2、編寫單元測試類和測試方法

使用Spring Initializr方式搭建的SpringBoot專案,會自動src.test.java測試目錄下建立與專案主程式啟動類對應的測試類並自帶一個contextLoads測試方法,下面來完善一下測試類的程式碼:

@SpringBootTest // 標記為SpringBoot單元測試類,並載入專案的ApplicationContext上下文環境
class SpringbootDemoApplicationTests {

    @Autowired
    private HelloController helloController;

    /**
     * 自動建立的單元測試方法示例
     */
    @Test
    void contextLoads() {
        String demo = helloController.demo();
        System.out.println(demo);
    }

}

執行測試方法,在控制檯檢視單元測試結果:

(2)熱部署

在開發過程中,通常需要對一段業務程式碼進行重複修改測試,在修改之後往往需要重啟服務,有些服務需要載入很久才能啟動成功,這種不必要的重複操作不利於提升開發效率。為此,SpringBoot框架專門提供了進行熱部署的依賴啟動器,用於進行專案熱部署,而無需手動重啟專案。

操作步驟:

1、引入spring-boot-devtools熱部署依賴啟動器

<!-- 引入熱部署依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

引入spring-boot-devtools熱部署依賴啟動器後,還需要針對IDEA開發工具進行熱部署相關的功能設定。

2、IDEA工具熱部署設定

選擇IDEA工具介面 File->Settings 選項,開啟 Compiler 皮膚設定頁面:

選擇 Build 下的 Compiler 選項,在右側勾選 Build project automatically 選項將專案設定為自動編譯,單擊 OK 按鈕儲存設定。

在專案的任意頁面中使用組合快捷鍵 Ctrl+Shift+Alt+/ 開啟 Maintenance 選項框,選中並開啟 Registry 頁面,具體如下圖所示:

在列表中找到 compiler.automake.allow.when.app.running,將該選項的 Value 勾選,用於指定 IDEA 工具在程式執行過程中自動編譯,最後單擊 Close 按鈕完成設定。

3、使熱部署生效

假如用 mvn spring-boot:run 方式啟動應用,修改完java檔案就會立即生效。

假如用 debug 方式啟動應用,則需要手動重新編譯整個專案,或者編譯被修改的檔案。比如點選 IDEA 選單 Build > Build XXX / Recompile XXX

4、熱部署效果測試

以 debug 模式啟動專案,訪問 http://localhost:8080/ 檢視結果:

頁面一開始輸出的內容為“你好SpringBoot”:

為了測試配置的熱部署是否有效,我們在不關閉專案的情況下將頁面返回內容修改為“Hello SpringBoot”並儲存,檢視控制檯資訊會發現專案能夠自動構建和編譯,說明專案熱部署生效,重新整理頁面:

可以看到,瀏覽器輸出了“Hello SpringBoot”,說明專案熱部署成功了。

總結

在本篇文章中,我們介紹了SpringBoot的基本概念,實現了一個簡單的SpringBoot專案demo,並且介紹了其單元測試與熱部署配置。

關於SpringBoot的知識還有很多,比如它的配置檔案、原理及原始碼解析、資料訪問、檢視技術及快取管理,在後面的文章中,我們會一一進行講解。

相關文章