初識Spring Boot

coderidea發表於2018-08-25

Spring Boot是什麼?

Spring Boot 基於Spring,為了解決Spring框架時配置繁多、部署流程複雜、開發效率低等問題。如果說Spring 目標是簡化Java開發,那麼可以認為Spring Boot 框架的目標是簡化Spring的開發。 Spring Boot 可以建立獨立程式,內嵌了tomcat、jetty等,可以直接啟動應用程式而不需要外部的容器。同時,Spring boot 可以自動配置Spring應用,並且將一些框架的依賴包整合起來,如開發web程式只需要引入web的starter,極大的簡化了包引用。從Spring建立以來,Spring Boot大概是Spring領域中最令人興奮的事情了。它在Spring之上構建了全新的開發模型,移除了開發Spring應用中乏味的內容。

Spring Boot提供了Spring Boot Starter、自動配置、命令列介面、Actuator四個主要特性,改變了開發Spring 應用程式的方式。

Spring Boot Starter:它將常用的依賴分組進行了整合,將其合併到一個依賴中,這樣就可以一次性新增到專案的Maven或Gradle的構建中;

自動配置:Spring Boot的自動配置特性利用了Spring 4 對條件化配置的支援,合理的推測應用所需的bean自動化的配置它們。

命令列介面(Commond-line interface,CLI):Spring 的CLI發揮了Groovy程式語言的優勢,並結合自動配置進一步簡化Spring應用的開發;

Actuator:它為Spring Boot應用新增了一定的管理特性。

Spring Boot Starter(依賴的傳遞性)

Spring boot Satarter將應用所需的各種依賴聚合成一項依賴。它的工作方式使用了Maven和Gradle的依賴傳遞方案,Starter在自己的Pom.xml檔案中宣告瞭多個依賴。當我們將某一個Starter依賴新增到Maven或Gradle構建中的時候,Starter的依賴將會自動地傳遞性解析。這些依賴可能會也有其他依賴。一個Starter可能會傳遞性地引入幾十個依賴。

自動配置

自動配置功能消減了Spring配置的數量,使用了約定優於配置的理念,大大的減少了Spring中的一些配置。它在實現時會考慮應用中的其他因素並推斷出你所需要的Spring配置。

場景1:將Thymeleaf模板作為Spring MVC的檢視,至少需要三個bean:ThymeleafView-Resolver,  SpringTemplateEngine,TemplateResolver。但是使用Spring Boot自動配置的話,我們需要做的僅僅是將Thymeleaf新增專案的類路徑中。如果Spring Boot探測Thymeleaf位於類路徑中,它將會推斷出我們需要使用Thyemeleaf實現Spring Mvc的檢視功能,並自動配置這些bean.

場景2:Spring boot Starter也會觸發自動配置。在Spring Boot應用中,如果我們想要使用Spring MVC的話,所需要做的僅僅是將Web Starter作為依賴放到構建之中。將Web Starter作為依賴放到構建中以後,它會自動新增Spring MVC依賴(前面提到的依賴傳遞性)。如果Spring Boot 的Web 自動配置探測到Spring MVC 位於類路徑下,它將會自動配置支援Spring MVC的多個bean,包括檢視解析器、資源處理器以及訊息 轉換器等等。我們接下來需要做的就是編寫處理請求的控制器。如果你之前從頭配置過一個Spring MVC 專案,你會理解這帶來的效率。

Spring Boot CLI

spring Boot CLI充分使用了Spring Boot Starter和自動配置的魔力,並新增一些Groovy的功能,它簡化了Spring 的開發流程,通過CLI,我們能執行一個或多個Groovy指令碼,並檢視它是如何執行的。在應用執行過程中,CLI能夠自動匯入Spring型別並解析依賴。

有一種實踐,單元測試程式碼通過Groovy編寫,帶來效率的提升。

Actuator

Spring Boot Actuator 為Spring Boot專案帶來了很多有用的特性,包括

  • 管理端點

  • 合理的異常處理以及預設的“/error"對映端點

  • 獲取應用的”/info"端點

  • 當啟用Spring Security時會有一個審計事件框架

這些特性很有用的,但Actuator最有用和最有意思的是管理端點,它開啟了一扇窗,能夠讓我們洞悉內部的應用執行狀況。

以上是Spring Boot的主要四個特性介紹,Spring Boot 的Starter減少了依賴列表的長度,自動配置功能則消減了Spring配置的數量。Spring Boot CLI 通過與Groovy結合帶來了開發測試效率的提升。

Spring Boot Actuator 則提供了一個我們能監控應用內部的執行狀況的視窗。內嵌tomcat、jetty等容器,可直接啟動應用程式而不需要外部的容器這些特性又為開發、除錯執行和專案部署時帶來巨大的便利和效率上的提升,Spring Boot 為開發,測試,部署,運維等層面帶來了巨大變化,大大的簡化了這些方面的複雜性,帶來了效率的大幅提升,也為後面的微服務提供了基礎。

本文首發於個人微信公眾號:webguan ;歡迎您的關注

相關文章