SpringBoot基礎學習(一) SpringBoot概念、簡單案例實現、單元測試及熱部署講解
- 2021 年 5 月 31 日
- 筆記
- springboot
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(選擇初始化服務器地址)」下使用默認的初始化服務器地址「//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)運行項目
點擊運行按鈕:
訪問 //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 模式啟動項目,訪問 //localhost:8080/ 查看結果:
頁面一開始輸出的內容為「你好SpringBoot」:
為了測試配置的熱部署是否有效,我們在不關閉項目的情況下將頁面返回內容修改為「Hello SpringBoot」並保存,查看控制台信息會發現項目能夠自動構建和編譯,說明項目熱部署生效,刷新頁面:
可以看到,瀏覽器輸出了「Hello SpringBoot」,說明項目熱部署成功了。
總結
在本篇文章中,我們介紹了SpringBoot的基本概念,實現了一個簡單的SpringBoot項目demo,並且介紹了其單元測試與熱部署配置。
關於SpringBoot的知識還有很多,比如它的配置文件、原理及源碼解析、數據訪問、視圖技術及緩存管理,在後面的文章中,我們會一一進行講解。