賀!此系列文榮獲 2023 iThome 鐵人賽《優選》獎項,正在規劃出書中,感謝大家的支持🙏,同名課程「Java 工程師必備!Spring Boot 零基礎入門」也已在 Hahow 平台上架
哈囉大家好,我是古古。
這次希望可以透過 30 天的鐵人賽文章,讓沒接觸過(甚至沒聽過)Spring Boot 的人,了解 Spring Boot 到底是什麼,以及如何運用 Spring Boot 搭建一個簡易的後端系統。
那麼我們就開始吧,Let's go!
經過這 30 篇系列文,你可以學到:
閱讀此系列文前,必須具備「Java 程式語言」和「MySQL 資料庫設計」的知識:
另外 Mac / Windows 皆可閱讀,電腦環境不影響。
所謂的 Spring Boot,他是目前 Java 後端中最主流的開發框架,不過在開始介紹什麼是 Spring Boot 之前,我們需要先來了解一下「前端」跟「後端」之間的差別、以及「框架」又是代表什麼意思。
在現今的網站架構中,可以分成「前端」和「後端」兩部分:
所以簡單的說的話,前端工程師就是去負責實作「這個網頁要長什麼樣子」,而後端工程師,則是負責去處理「要在這個網頁上賣什麼東西」,所以前端工程師處理的是排版設計,而後端工程師處理的則是動態的數據。
而在理解了前端和後端的概念之後,接著就可以來理解「框架」的概念了。
透過剛剛的介紹,現在我們知道,前端是負責網頁的排版設計,後端則是負責數據處理。而在前端的世界中,其實是有非常多種的程式語言,都可以去實作出網站的排版設計,所以同樣的道理,在後端的世界中,也是有非常多種的程式語言,可以去實作出數據處理的功能的。
在後端的世界裡中,比較常被拿來使用的程式語言有 Java、Python、PHP…等等,所以「Java 後端」所表示的,就是使用 Java 來開發的後端程式。
而在最古早的時代,工程師們就是直接拿著 Java 和 Python 這種程式語言,一筆一畫的把整個後端系統給實作出來,所以使用者就可以透過這個後端系統,在某個電商網站中執行購買商品、或是去查看商品評價……等等的操作。
但是這些工程師們當時寫著程式就發現,每次開發一個後端系統,都要重新寫一堆相似度非常高的程式,覺得很心累也很浪費時間,因此就有團隊開始開發出了 「框架(Framework)」,試圖提升開發後端系統的效率。
所以到這邊為止,你可以先簡單的把「框架(Framework)」想像成是一個好用的工具包,在沒有框架以前,你要花非常多時間和力氣,才能夠手動的用螺絲起子,去把整個後端的系統給蓋出來,而在有了框架之後,你就像拿到一把強力電鑽一樣,只要輕鬆的按幾下按鈕,就可以快速的把後端系統給架設出來了。
所以「加速工程師開發的效率」,就是「框架」被發明出來的目的。
了解了「Java 後端」和「框架」的意義之後,這時候我們回頭看最一開始說的那句話,就比較可以看的懂了。
我們在最一開始有提到:「Spring Boot 是目前 Java 後端中最主流的開發框架」,所以 Spring Boot 的目的,就是「提供一個好用的工具,讓 Java 後端工程師可以加快開發的效率」。
也因為 Spring Boot 非常的好用,幾行簡單的設定就可以快速架設出一個後端系統出來,所以 Spring Boot 就成為了目前 Java 業界中最主流的開發框架,甚至已經到了 「不會 Spring,不談就業」 的程度,由此也可知 Spring Boot 對 Java 業界的影響程度。
補充:「框架」的目的,就是為了提升工程師開發的效率,而不同的程式語言,其實都會有他專屬對應的框架可以使用,譬如說以 Java 為例,他對應的主流框架就是 Spring 框架,而 PHP 的話,對應的主流框架則是 Lavarel 框架,不同程式語言之間的框架是沒辦法混用的。
所以到這邊為止,我們已經大概了解了 Spring Boot 的用途了,基本上 Spring Boot 就是 Java 後端中的一個好用的開發框架,只要你是使用 Java 來開發後端程式,通常就是會使用 Spring Boot 這套框架,來加速你開發後端程式的效率。
但說了這麼多,使用 Spring Boot 的好處在哪裡?他到底為我們提升了哪些開發的效率?所以以下我們就來探討一下,使用S pring Boot 開發的優勢在哪裡。
使用 Spring Boot 的第一個好處,就是可以「簡化 Spring 的開發」。
在很久很久以前,在當時傳統的 Spring 框架開發中,其實工程師是需要進行大量的 xml 設定,才能將 Spring 框架運行起來,而 Spring Boot 的推出,就是希望能夠解決 Spring 框架設定繁瑣的缺點。
舉個例子來說的話,在傳統 Spring 框架中,你就是會有一堆車子的零件,但是你必須要自己「手動」把他們焊接起來,並且你可能還會焊錯;而新一代的 Spring Boot,則是你直接走進去汽車店裡,直接花錢下單把車開走,所以兩者相較起來,當然是 Spring Boot 更加簡單好用。
另外大家也可以觀察一下「Spring Boot」這個單字,他其實就是由「Spring」和「Boot」兩個字所組合起來的,其中「Spring」所代表的就是 Spring 框架,而「Boot」所代表的則是開機的意思,所以組合這兩個單字的話,就可以得到「Spring Boot」。
所以 Spring Boot 本身的目的,就是希望能提供一個按下開機鍵,就可以直接使用的後端程式給你,並且在這個後端程式的內部,就都是使用 Spring 框架的零件所組成的。
使用 Spring Boot 開發的第二個優勢,就是可以「快速的整合主流框架」。
因為 Spring Boot 採用了 「約定優於配置」 的設計方式,因此就可以簡化開發時繁瑣的設定檔,快速的整合其他主流框架,提升工程師開發的效率。
這個「約定優於配置」聽起來是有點抽象,其實換句話說的話,就是 Spring Boot 會預先幫你設定好預設值的意思,所以假設你今天加了一個新功能,即使你一行設定都沒有寫,Spring Boot 也會預先套用他寫好的設定檔,快速的整合該框架進來。
雖然「約定優於配置」是很大的優點,不過對於初學 Spring Boot 的人來說,可能反而會是一個小缺點,因為太多東西都被 Spring Boot 預先設定好了,因此初學者可能會完全搞不懂現在是發生了什麼事情。
不過只要好好的學習過 Spring Boot 的用法、以及相關的設定之後,這個優點就會轉變成非常強大的優勢!
當然 Spring Boot 還有其他很厲害的優勢,不過優勢都是和過往的框架比較出來的,而那些框架目前已經非常少見,因此大家有興趣的話,可以再去搜索 Spring Boot 和其他框架的對比,這邊就不多做贅述。
大致了解了前端和後端的概念,以及 Spring Boot 是什麼之後,接下來是介紹一下此系列文的文章規劃安排。
此系列文會分成 30 篇文章,透過 5 個部分來介紹 Spring Boot,預計的文章規劃如下:
在最開始的幾篇文章,我們會先簡單認識 Spring Boot,並且安裝此系列文中會使用到的所有開發工具,為將來的 Spring Boot 之旅架設好開發環境。
架設好環境之後,接著就會進到第二部分,介紹 Spring 框架中兩個非常重要的特性:IoC 和 AOP。
IoC 和 AOP 是 Spring 框架裡的核心技術,幾乎所有 Spring 的功能,都是建立在這兩大特性之上,因此如果能夠掌握好這兩大特性,能夠為將來的 Spring Boot 之旅打下良好的基礎。
介紹完 Spring 框架的核心特性之後,接著就會進到第三部分,介紹 Spring MVC 的相關知識。
Spring MVC 的用途是和前端溝通,因此在這個章節裡,除了會介紹 Spring MVC 的基本用法之外,同時也會介紹許多通用的網路知識,像是 Http 協議、Json、RESTful.等等,讓大家了解前端和後端之間的溝通方式。
了解了 Spring MVC 的用法之後,接著會進到第四部分,介紹 Spring JDBC 的相關知識。
不同於前面的 Spring MVC 是和前端溝通,Spring JDBC 的主要功能是和資料庫進行溝通,因此當介紹完這部分之後,大家就能夠在 Spring Boot 中去操作資料庫,進而取得到相關的數據了。
前面的四個部分都是偏向功能的介紹,而第五部分則是會安排是一個實戰演練,實際的去整合前面四個部分所學到的知識,打造出一個簡易的圖書館系統出來。
所以透過最後的這個實戰練習,希望能幫助大家更好的了解、活用 Spring Boot 的知識!
此系列文的最後一天會來做個大總結,詳細列出我們在這 30 天內都介紹了哪些內容,也會補充 Spring Boot 後續的學習路徑,提供給大家參考。
這篇文章我們先介紹了什麼是 Spring Boot,也介紹了前端和後端的區別、以及框架的概念,讓大家先對 Spring Boot 有一個簡單的認識。
那麼下一個文章,我們就會接著來進行環境設定,為將來的 Spring Boot 之旅架設好開發環境,那我們就下一篇文章見啦!