透過本篇文章您可以瞭解到以下內容:
- Spring Boot發展歷史
- Spring Boot核心特性
- Spring Boot 版本遷移
- 總結
Spring Boot 發展歷史
首先讓我們來看看,什麼是Spring Boot呢? 簡單的來說Spring Boot就是一個Java Web開發框架。 Spring Boot是基於Spring開發的,與此同時與Spring框架緊密結合,從而極大提升了Java開發者的開發體驗。
我們知道,隨著Spring不斷的發展壯大,涉及的領域越來越多,從而對於專案整合時開發者需要配置的文件數量也隨之增加。 同時也加大了開發者的學習曲線。 Spring Boot正是在這樣的一個背景下被創造出來的。 當我們談到Spring Boot的發展歷史時,我們首先要從一個Jira 說起。
早在2012年的10月12日,Mike Youngstrom 在Spring Jira中 提交了一個名為Improved support for ‘containerless’ web application architectures Spring (Spring 框架中支持無容器 Web 應用程式體系結構)的請求。 在這個請求中Mike Youngstrom對現有開發人員需要面臨克服的學習曲線進行了一一闡述:
英文描述:
- web.xml and other Servlet oriented configuration concepts
- War directory structure
- Container implementation specific items (e.g. ports, thread pools, etc.)
- Complex Classloading hierarchies
- Monitoring and management facilities configured outside of the application
- Logging facilities
- Configuration of application context roots
中文描述:
- web.xml以及其他面向Servlet配置的概念。
- War目錄結構
- 容器實現特定項(如 ports, thread pools…等)
- 複雜類載入層次結構
- 應用程式外部配置的監控和管理設施
- 日誌工具
- 應用程式上下文的配置
同時Mike Youngstrom 指出為了實現這種簡化,認為Spring不需要創建一個全新的HTTP引擎。 它可以簡單地利用嵌入式servlet容器,如Jetty。 儘管它需要盡可能多地抽象配置。
Jira的詳細內容可以參考以下連結: https://jira.spring.io/browse/SPR-9888?redirect=false
兩年後也就是2014年的4月Spring Boot 1.0.0正式發佈,從那以後一些Spring Boot的版本也隨之而出 ,以下是關於各個Spring Boot主要版本發佈的說明連結:
Spring boot 1.1 – Spring Boot 2.4
正是由於Spring Boot的簡單、快速、開箱即用等特性,使得Java 開發人員能夠快速大規模採用,並且大大降低了學習曲線。 正如JRebel的2022年開發者生產力報告中提到的那樣,Spring Boot已經作為 Java開發微服務首選的框架,並且佔有主導位置。
至此相信大家對Spring Boot的發展歷史有一個清晰的了解,那麼接下來讓我們看看Spring Boot具有哪些核心特性。
Spring Boot 核心特性
Spring Boot之所以被Java開發者廣泛使用,離不開它所具有的強大特性和設計原則,那麼接下來就讓我們深入瞭解下Spring Boot的核心特性。
核心特性一
遵循約定大於配置的核心思想。 使用Spring Boot我們只需要進行非常少的配置,而且大多數的情況可以使用預設配置即可。
核心特性二
相比傳統Spring 專案例如Spring MVC,我們可以完全不使用XML配置,只需要使用自動配置以及Java Config方式即可。
核心特性三
內嵌Servlet容器,降低了對環境的依賴程度,以及大大減少了學習成本,相比war方式的部署,可以直接使用jar的方式進行部署,同時可以透過簡單的命令java -jar xx.jar 進行啟動。
核心特性四
依賴管理Spring Boot提供starter機制,從而大大簡化了Maven配置。 此外可以透過 https://start.spring.io 進行項目建構。 透過選擇添加專案所需要的依賴,幫助開發者快速建構專案骨架,例如常用的spring-boot-starter-web等依賴。
核心特性五
應用的可觀測性,Spring Boot提供了對當前應用可觀測的解決方案,也就是我們熟知的actuator。 實現這種功能,只需要添加spring-boot-starter-actuator,我們就可以獲取面向生產就緒的監控數據,如應用運行時狀態等,從而可以幫助開發和維運人員快速定位系統問題。
核心特性六
對Spring自動裝配,Spring Boot會為jar包的類進行自動對Bean的裝配。 這樣會極大減少所需要使用的配置。 這種操作可以覆蓋大多數的開發場景,如果實際開發過程中我們需要配置特定的Bean,可以使用Spring Boot自定義自動配置的能力。
Spring Boot 版本遷移
首先我們來看看Spring Boot官方對於版本發佈的說明:
可以看到的是,主要版本的發佈週期是每六個月一次,同時對於每一個主要的版本,無論是開源社區的版本還是商業支援的版本都會有與之對應的End of Support日期。 以下就是主要版本的時間週期情況
此外一個主要的新版本發佈可能會帶來一些新的功能以及老舊Bug的修復。 那麼如果選擇進行新版本的升級,最佳升級的路徑是怎樣呢? 關於這個問題,大體可以理解分為兩類:
第一類: Spring Boot 1. X 的版本到Spring Boot 2.0
對於Spring Boot 1. x的版本目前早已經不再維護,如果需要進行版本的升級,可以參考官方給出的遷移實踐路徑,對應的連結在此。
第二類: Spring Boot 2.x 版本的升級
比如,是否因為版本的升級,修改或者重命名一些配置檔,亦或有一些依賴已經在新的版本中進行了移除? 正是因為諸如此類的問題,從Spring Boot的角度,提供了一個關於遷移的開源專案,我們稱之為spring-boot-properties-migrator。
如果需要啟用該特性需要將下方的依賴添加到所對應的工程當中(以Maven為例)
對於這種特性的詳細說明,我們可以在對應的Spring Boot官方文檔中查看,此連結是以Spring Boot2.7.3文檔進行說明
總結
回顧全篇內容,整體包括以下內容:
- 首先在開篇我們對Spring Boot的發展歷史有了一個全面清晰的瞭解。
- 其次我們對Spring Boot的核心特性進行了深入展開的討論。
- 最後在關於Spring Boot版本遷移的方面給出了最佳實踐路徑。
至此我們可以利用Spring Boot來建構每一個微服務,那麼在微服務架構體系中我們遇到的常見問題又如何解決呢? 比如微服務體系下註冊中心的搭建、微服務之間調用的負載均衡、熔斷、降級、限流等,這些問題Spring又會給出哪些開箱即用的解決方案呢? 在下一章節中我們會深入瞭解Spring Cloud,微服務架構的解決方案。 敬請期待!
參考連結:
- https://github.com/spring-projects/spring-boot
- https://docs.spring.io/spring-boot/docs/2.7.3/reference/pdf/spring-boot-reference.pdf
- jrebel-2022-java-developer-productivity-report
作者簡介
Comments
0 Comments have been added so far