什麼是 Spring Boot?
Java Spring Boot 是開放原始碼工具,能夠輕鬆使用以 Java 為基礎的架構來建立微服務和 Web 應用程式。對於任何 Spring Boot 的定義來說,交談必須由 Java 開始 (Java 是應用程式開發中最熱門且廣泛使用的開發語言和運算平台之一)。全球各地的開發人員的編碼旅程均始於 Java。舉凡從社群媒體、Web 和遊戲,到網路和企業應用程式,Java 的靈活度和使用便利性成為各種程式開發人員最屬意的選擇。
Java 和 Spring 架構
雖然 Java 可能比其他語言易於使用和學習,但是建置、偵錯和部署 Java 應用程式的複雜程度已達到令人眼花的新高度。這是因為現代開發人員為常見現代技術 (例如音樂串流或行動現金支付應用程式) 開發 Web 應用程式或行動裝置應用程式時,他們面臨了指數型的變數。撰寫企業營運應用程式的開發人員現在需要管理多個程式庫、外掛程式、錯誤記錄檔,還需處理程式庫、搭配 Web 服務的整合,以及多種語言 (例如 C#、Java、HTML 和其他語言)。可理解的是,能夠簡化 Java 應用程式開發的工具依然不足,難以節省開發人員的時間和金錢。
輸入應用程式架構:此架構是預先撰寫的大量程式碼,讓開發人員可以依需求使用並新增自己的程式碼。無論是開發行動和 Web 應用程式,或使用桌上型電腦和 API,這些架構幾乎能夠減輕開發人員的各種需求負擔。架構能提供可重複使用的程式碼和工具,協助連結軟體開發專案的各種元素,讓應用程式的建立過程更快速、輕鬆且安全。
以下介紹 Spring 的誕生原因:Spring 是開放原始碼專案,可提供簡化、模組化的 Java 應用程式建立方法。Spring 專案Spring 專案系列於 2003 年啟動,以因應早期 Java 開發的複雜性,並提供開發 Java 應用程式的支援。單獨使用 Spring 這個名稱時,通常是指應用程式架構本身或整個專案群組或模組。Java Spring Boot 是一種特定模組,會建置為 Spring 架構的延伸模組。
因此,在 Spring 架構、Spring Boot 和 Java 的共同運作背景下,Spring Boot 的定義為:可簡化並加速 Java 架構 (Spring) 內 Web 應用程式和微服務開發的工具。
有時候,由於語言和/或平台是 Java,所以它又稱為「Java Spring Boot」、「Java Spring 架構」或「Spring Boot 架構」。不過,因為 Java 還有其他協力廠商架構 (例如 Play 和 Hibernate),所以稱為「Spring」和「Spring Boot」更為準確。
如需了解 Java 基本功能的高層及討論,請參閱什麼是 Java?一文。
Spring 和 Spring Boot 有何不同?
如同先前所述,Spring 是以 Java 為基礎的開放原始碼應用程式架構,範圍涵蓋許多小型專案。其他熱門 Spring 專案包含 Spring Data、Spring Cloud 和 Spring Security,這裡僅列出幾個例子。若要探討 Spring Boot 與Spring 的差異,請務必了解,雖然兩者核心功能可能有所不同,但它們皆屬於 Spring 系列。
若要充分了解 Spring 和 Spring Boot 的差異,必須先定義幾個關鍵詞。
什麼是微服務?
什麼是相依性插入?
相依性插入 (DI) 是用於達到控制反轉 (IoC) 的設計技術。在物件導向程式設計 (例如 Java) 中,若物件相依於其他物件,就稱為「相依性」。一般來說,接收或相依物件稱為用戶端,而用戶端所相依的物件則稱為服務。因此,相依性插入會將服務傳遞給用戶端,或使用名為載入程式的程式碼「插入」相依性。DI 會排除用戶端指定使用哪個服務的需求,因為載入程式會為用戶端完成這項工作。
何謂慣例優於設定?
慣例優於設定 (有時候稱為慣例編碼) 是用於應用程式架構的概念,可減少開發人員必須作出的決策數。此概念遵守「不重複原則」以避免撰寫冗餘碼。慣例編碼會盡力維持靈活度,同時允許開發人員針對自己建立的應用程式僅撰寫非慣例層面的程式碼。當應用程式所需的行為符合建立的慣例時,應用程式將會依預設執行,無需撰寫設定檔。如果所需行為偏離「慣例」,開發人員僅需明確撰寫設定檔即可。
Spring 架構與Spring Boot
Spring | Spring Boot | |
---|---|---|
這是什麼? | 以 Java 為基礎的開放原始碼 Web 應用程式架構。 | 建置於 Spring 架構的延伸模組或模組。 |
用途為何? | 使用工具和預建程式碼的程式庫,提供靈活、完整的設定環境,來打造自訂、鬆散結合的 Web 應用程式。 | 提供建立獨立 Spring 應用程式的功能,可立即執行該應用程式,無需註釋、XML 設定或撰寫許多額外程式碼。 |
使用時機為何? | Spring 的使用時機:
| Spring Boot 的使用時機:
|
主要功能為何? | 相依性插入 | 自動設定檔 |
是否有內嵌伺服器? | 否。您必須在 Spring 中明確設定伺服器。 | 是,Spring Boot 隨附於 Tomcat 和 Jetty 等內建 HTTP 服務。 |
如何設定? | Spring 架構提供靈活度,但必須手動建置設定檔。 | Spring Boot 會藉由預設的「慣例優於設定」原則,自動設定 Spring 和其他協力廠商架構。 |
我需要知道如何使用 XML 嗎? | 使用 Spring 時,您必須了解如何設定 XML。 | Spring Boot 不需要 XML 設定。 |
是否有開發/測試應用程式的 CLI 工具? | Spring 架構本身不為開發或測試應用程式提供 CLI 工具。 | 作為 Spring 模組,Spring Boot 提供開發和測試用的 Spring 型應用程式 CLI 工具。 |
運作方式為約束式或非約束式方法? | 非約束式* | 約束式* |
*約束式或非約束式架構方法
雖然「約束式」一詞聽起來可能有點負面,但是 Spring Boot 的約束式方法和非約束式 Spring 架構皆有各自的優點。
約束式方法
約束式方法採取單向立場,比所有其他方法更為簡單。在設計過程中,此軟體會限制設計工具,促使該工具以指定的方式執行作業。
此方法提供已安排好的路徑,在大多數情況下,這是最適合大部分人員的做法。此應用程式會緊密依據這些最佳做法和廣泛慣例來撰寫。約束式方法可讓您更輕鬆地共同作業和取得編碼專案協助,而其他具備該架構經驗的開發人員也能馬上熟悉新的應用程式並可立即使用。
非約束式方法
如果所有解決方案需要大致相同的投入量或複雜度,即可採用非約束式方法。此方法採取正確方式不只一種的立場,以取得問題的解決方案。確切地說,此方法提供的靈活工具可以透過多種方式解決問題。非約束式架構具有在開發過程中提供彈性的優點,並且讓開發人員得以掌控更多控制權。過多彈性的主要缺點是,開發人員必須做出更多決策,並且最後可能會因為此架構過於開放且沒有約束,而必須撰寫更多程式碼。
Spring Boot 的功能與優點
最後來談些令人期待的部分,也就是 Java Spring Boot 在 Spring 架構之外的核心能力。Spring Boot 能提供更輕鬆、更快速的安裝、設定和執行應用程式的路徑,並消除安裝大多數 Spring 型應用程式所需的大量設定。開發人員無需學習基礎 Spring 架構,即可馬上加入並使用 Spring Boot。
Spring Boot 功能如何協助簡化 Java 程式設計工作。以下是 Spring Boot 的一些主要功能::
-
獨立應用程式︰Spring Boot 可協助建立未連結於特定平台的應用程式,並且可以在無網路連線或其他已安裝的服務情況下,於裝置上本機執行應用程式。
-
內嵌伺服器︰Spring Boot 可讓您直接內嵌 Tomcat、Jetty 或 Undertow 等伺服器。
-
約束式方法︰Spring Boot 提供約束式起始相依性,以簡化組建組態。
-
自動設定檔:Spring Boot 會盡可能自動設定 Spring 和其他協力廠商程式庫。
-
已準備好投入生產力環境的功能:Spring Boot 提供如計量、健康情況檢查和外部設定等已經準備好投入生產環境的功能。
Spring Boot 的優點
Spring Boot:
-
減少開發時間和增加生產力︰Spring Boot 讓透過 Java 開發 Spring 型應用程式更加輕鬆。其 Spring 架構的約束式方法減少了制定決策和執行重複工作的時間,進而增加專注於建立和測試應用程式的時間。
-
減少撰寫重複程式碼、註釋和 XML 設定的需求:開發人員無需產生程式碼或設定 XML,甚至無需學習 Spring 架構 (如果非必要的話)。
-
整合 Spring 專案系列的應用程式:Spring Boot 應用程式能夠在 Spring 架構生態系統中順暢整合其他專案,例如 Spring Data、Spring Cloud、Spring Security,以及其他信賴的雲端服務,例如 Microsoft Azure Spring Cloud。
-
提供開發/測試工具:透過 Spring Boot 的命令列介面 (CLI) 工具和內嵌 HTTP 伺服器,建立開發/測試 Spring 型應用程式就會變得非常簡單。
-
提供讓開發更加輕鬆的外掛程式和工具:Spring Boot 提供能夠與記憶體內部資料庫共同作業的外掛程式,以及其他熱門的建置自動化工具,例如 Apache Maven。
Java Spring Boot 教學課程
如果您已熟悉使用 Spring 架構建置應用程式,您可能會覺得使用本節提供的教學課程、專案入門和文件來學習 Spring Boot 非常簡單。不過,如果您急需使用 Spring Boot 但尚未了解該架構,提供您以下好消息。在開始學習 Spring 架構之前,您可以學習並開始使用 Spring Boot,因為您會在過程中了解許多架構基礎。雖然這無法教導您有關此架構的所有知識,但如果您決定稍後再學習,這會是一個很好的出發點。
除了讓應用程式開發更快速且更有效率之外,學習 Spring Boot 的另一項優點是,它也能夠讓您使用其他 Spring 功能,例如 Spring Data、Project Reactor 和 Spring Security。
相依性插入
- XML 型,亦即:<beans/> 和 <namespace:*/>。
- 註釋型,亦即:@Component、@Autowired、@Inject。
- Java 型,亦即:@Configuration classes、@Bean methods。
控制反轉 (IoC)
- ApplicationContext:做為 Spring IoC 容器的根介面。
- BeanFactory:存取 Spring 容器的介面。
- Beans:由 ApplicationContext 具現化、組合和管理的物件。
Java Spring Boot 教學課程 (適用於初學者)
建立和協助保護 Java 應用程式
使用適用於 Microsoft Entra ID (先前稱為 Azure Active Directory) 的 Spring Boot 啟動程式建立附帶 Spring Initializr 的 JAVA 應用程式。
常見問題集
-
Spring Boot 是由 Spring 提供的開放原始碼、微服務型 Java Web 架構,對於開發 Web 應用程式和微服務的軟體工程師特別有幫助。
-
「Java 中的 Spring Boot」是「Java Spring Boot」的另一種稱呼,這兩個字詞可以交互使用。Java 是語言和平台,Spring 是以 Java 為基礎的應用程式架構,而 Spring Boot 則是 Spring 架構的延伸模組並具備一些額外優點。
-
Spring Boot 擁有一般 Spring 架構的功能,但是使用 Spring Boot 之前無需先學習 Spring。由於 Spring Boot 屬性為自動設定,並且其約束式方法會移除許多與 Spring 應用程式開發和部署相關的重複使用程式碼和設定,因此開發人員可以節省啟用和執行應用程式的時間。
-
是的,如先前所述,Spring Boot 對於軟體開發架構的微服務方法非常有幫助。微服務是一種熱門的方式,能夠建置可獨立運作的小型自主團隊,但就本質上而言,微服務僅能在後端運作。
-
開發 Spring Boot 應用程式可減少開發時間、增加生產力,且易於使用,這些只是其中幾項優點。
-
Spring 網站提供許多教學課程、快速入門和文件,以及 Microsoft Azure 提供的 Spring Boot Starter 和文件。如果您想要立即開始部署 Spring Boot 應用程式,請查看「大規模加速 Spring Boot 應用程式至雲端」網路研討會。