Trace Id is missing
跳至主要內容
在辦公室透過自己的膝上型電腦畫面工作的人們

什麼是 Java Spring Boot?

Spring Boot 簡介:適用於開發 Web 應用程式和微服務的熱門且以 Java 為基礎的工具。

使用外接鍵盤和滑鼠看著膝上型電腦螢幕的人

什麼是 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 的差異,必須先定義幾個關鍵詞。

看著膝上型電腦的人。
看著平板電腦的女士。

什麼是微服務?

微服務是軟體開發架構的方法。微服務中的「微」字指的是在小型、可管理的要素或元件中傳遞的程式碼,而每個「服務」或核心功能的建立與部署,都是獨立於其他服務之外。獨立元件會透過稱為合約的指定 API 文件共同運作並互相通訊。這些微服務的小規模和相對隔離有許多優點。例如,由於此類型的架構分散且鬆散結合,因此即使有一個元件故障也不會中斷整個應用程式。其他優點包括生產力提高、維護輕鬆便利、更完善的業務一致性,以及更佳的容錯能力。

什麼是相依性插入?

相依性插入 (DI) 是用於達到控制反轉 (IoC) 的設計技術。在物件導向程式設計 (例如 Java) 中,若物件相依於其他物件,就稱為「相依性」。一般來說,接收或相依物件稱為用戶端,而用戶端所相依的物件則稱為服務。因此,相依性插入會將服務傳遞給用戶端,或使用名為載入程式的程式碼「插入」相依性。DI 會排除用戶端指定使用哪個服務的需求,因為載入程式會為用戶端完成這項工作。

看著膝上型電腦和螢幕的人
戴著 VR 頭戴式裝置的女性

何謂慣例優於設定?

慣例優於設定 (有時候稱為慣例編碼) 是用於應用程式架構的概念,可減少開發人員必須作出的決策數。此概念遵守「不重複原則」以避免撰寫冗餘碼。慣例編碼會盡力維持靈活度,同時允許開發人員針對自己建立的應用程式僅撰寫非慣例層面的程式碼。當應用程式所需的行為符合建立的慣例時,應用程式將會依預設執行,無需撰寫設定檔。如果所需行為偏離「慣例」,開發人員僅需明確撰寫設定檔即可。

Spring 架構與Spring Boot

由於 Spring Boot 是根據 Spring 架構的優點而建置,因此兩者並非「不可兼得」,而是可以「同時兼備」的優勢。Spring 和 Spring Boot 並非相對關係,而是相輔相成:
全組織支援計劃
Spring Spring Boot
這是什麼?

以 Java 為基礎的開放原始碼 Web 應用程式架構。

建置於 Spring 架構的延伸模組或模組。

用途為何?

使用工具和預建程式碼的程式庫,提供靈活、完整的設定環境,來打造自訂、鬆散結合的 Web 應用程式。

提供建立獨立 Spring 應用程式的功能,可立即執行該應用程式,無需註釋、XML 設定或撰寫許多額外程式碼。

使用時機為何?

Spring 的使用時機:

  • 需要彈性。
  • 使用非約束式方法。*
  • 從自訂程式碼移除相依性。
  • 實作極為獨特的設定。
  • 開發企業應用程式。

Spring Boot 的使用時機:

  • 需要簡便操作。
  • 使用約束式方法。*
  • 快速執行合格應用程式並減少開發時間。
  • 避免撰寫重複使用程式碼或設定 XML。
  • 開發 REST API。
主要功能為何?

相依性插入

自動設定檔

是否有內嵌伺服器?

否。您必須在 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:

Java Spring Boot 教學課程

如果您已熟悉使用 Spring 架構建置應用程式,您可能會覺得使用本節提供的教學課程、專案入門和文件來學習 Spring Boot 非常簡單。不過,如果您急需使用 Spring Boot 但尚未了解該架構,提供您以下好消息。在開始學習 Spring 架構之前,您可以學習並開始使用 Spring Boot,因為您會在過程中了解許多架構基礎。雖然這無法教導您有關此架構的所有知識,但如果您決定稍後再學習,這會是一個很好的出發點。

除了讓應用程式開發更快速且更有效率之外,學習 Spring Boot 的另一項優點是,它也能夠讓您使用其他 Spring 功能,例如 Spring Data、Project Reactor 和 Spring Security。

使用耳機對著膝上型電腦說話的人
不過,如果您先了解相依性插入和控制反轉如何在 Spring 架構中運作的基本概念,您將會更輕鬆地完成首堂 Spring Boot 教學課程。以下為高階概述:

相依性插入

  • XML 型,亦即:<beans/> 和 <namespace:*/>。
  • 註釋型,亦即:@Component、@Autowired、@Inject。
  • Java 型,亦即:@Configuration classes、@Bean methods。

控制反轉 (IoC)

  • ApplicationContext:做為 Spring IoC 容器的根介面。
  • BeanFactory:存取 Spring 容器的介面。
  • Beans:由 ApplicationContext 具現化、組合和管理的物件。

Java Spring Boot 教學課程 (適用於初學者)

一旦熟悉基本知識後,如果您希望大規模建置和部署 Spring Boot 應用程式,請考慮參考 Microsoft 和 VMware 的完全受控 Azure Spring Cloud。或者,立即透過「如何使用 TLS/SSL 憑證保護 Spring Boot 應用程式」教學課程踏出第一步。

建立和協助保護 Java 應用程式

使用適用於 Microsoft Entra ID (先前稱為 Azure Active Directory) 的 Spring Boot 啟動程式建立附帶 Spring Initializr 的 JAVA 應用程式。

將第一個應用程式部署至 Azure Spring Cloud

了解如何透過 Spring Initializr 建立、佈建和監控簡單的 Spring Boot 應用程式。

建置簡單的 Spring Boot 微服務

建置和部署簡單的微服務,然後了解如何將 Spring Cloud 技術納入其中。

更多 Spring Boot Starter

將儲存空間、安全性、驗證和金鑰保存庫功能新增至 Spring Boot 應用程式。

常見問題集

  • 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 應用程式至雲端」網路研討會。

當您一切準備就緒之後,就能開始設定您的 Azure 免費帳戶