在接觸 Spring Boot 之前,對 Spring Boot 的印象一直停留在「很強大、但也很複雜」的階段。看著許多後端軟體工程們能快速地開發出功能完整的後端相關應用程式,心裡總是充滿了敬佩。這次藉由前面 29 天的學習,對我們來說就像一張詳細的地圖,一步步走進 Spring Boot 的世界,將許多原本抽象的概念,變得具體而清晰。
我的學習過程大致可以分為四個階段:
這個階段就像是蓋房子前的地基工程。從最基本的開發環境建置開始,詳細介紹了如何在 Windows 上安裝 OpenJDK、Maven,以及強大的 IntelliJ IDEA 開發工具。對我們這樣的初學者來說,這種手把手的教學方式非常有幫助,避免了在一開始就因環境問題而卡關。
接著,每天的學習單元裡,用非常生動的比喻,解釋了 Spring Boot 的核心理念,例如:
IoC (控制反轉) 與 DI (依賴注入):這個單元裡,用了「去餐廳吃飯,由廚師幫你準備餐點」和「珍珠奶茶店」的比喻,讓我們瞬間可以理解了為什麼我們不再需要到處 new
物件,而是將建立物件的權力交給 Spring 容器,這大大降低了程式碼之間的依賴性。
pom.xml
的解析:這部分讓我們明白 pom.xml
就像是專案的「身分證」和「藍圖」,詳細定義了專案的依賴和建構規則。
進入這個階段,我們開始接觸到 Spring Boot 的「魔法」。
application.properties
:我學會了如何使用這個檔案來管理各種設定,文件稱之為「應用程式的遙控器」,這個比喻非常貼切。我們可以為開發、測試、正式環境準備不同的設定檔,讓部署變得更有彈性。
認識 Bean 與 Annotation (註解):這是最讓我們驚豔的部分。@Component
、@Service
、@Repository
這些註解 (Annotation) 就像是給不同角色(廚師、騎士)貼上的「名牌」,Spring Boot 會自動掃描並管理他們。而 @Autowired
則是向 Spring 這個「總管」申請人手。整個過程取代了過去繁瑣的 XML 設定,讓程式碼變得非常乾淨。
@SpringBootApplication
的秘密:原來這個看似簡單的註解 (Annotation),背後結合了 @Configuration
、@EnableAutoConfiguration
和 @ComponentScan
三大核心功能,是整個自動化魔法的起點。
這是最有成就感的階段!我終於可以親手寫出能跟瀏覽器互動的程式了。
@RestController
的出現,讓我明白建立一個回傳 JSON 資料的 API 是如此簡單。
@PathVariable
和 @RequestParam
就像是從 URL 中提取資訊的兩個利器,一個用來指定特定資源(如 /users/123
),另一個用來篩選(如 /search?keyword=java
)。
@RequestBody
則讓我學會如何處理更複雜的請求,例如從前端接收一個 JSON 物件來新增使用者資料。
這個階段讓我見識到 Spring Boot 在處理資料庫時的強大之處。
Spring Data JPA:文件將它比喻為「Java 物件」和「資料庫表格」之間的「自動翻譯機」,這個概念讓我們豁然開朗。我們只需要定義好 Entity (實體),JPA 就能幫我們處理大部分的資料庫操作。
Repository 的魔力:最神奇的是,我只需要定義一個 interface
(介面)並繼承 JpaRepository
,不需要寫任何實作程式碼,就自動擁有了完整的 CRUD(新增、讀取、更新、刪除)功能。
從 H2 到 PostgreSQL:文件引導我從開發時方便的記憶體資料庫 H2,平滑過渡到正式環境常用的 PostgreSQL,讓我對不同環境的資料庫配置有了實際的認識。
進階主題:最後幾天的內容,如實體關聯 (@OneToMany
)、效能優化 (批次處理、N+1
問題),以及交易管理 (@Transactional
),雖然比較深入,但也讓我了解到一個真實世界的應用需要考慮的面向,例如如何確保資料在多筆操作時的「要嘛全成功,要嘛全失敗」。
藉由前面 29 天的學習,我最大的感受是 Spring Boot 的設計哲學——「約定優於配置 (Convention over Configuration)」。它為開發者鋪好了一條康莊大道,只要遵循它的慣例,就能用極少的程式碼和設定,快速地搭建出一個健壯、高效的應用程式。
對我而言,最困難的部分在於一開始要記住各種 Annotation 的用途,以及理解交易傳播 (Propagation
) 和隔離級別 (Isolation
) 這些比較抽象的概念。但文件透過大量的程式碼範例和生動的比喻,讓這些困難點逐一被攻克。
總而言之,藉由前面 29 天的學習,不僅僅是教我如何「使用」Spring Boot,更是教我「理解」Spring Boot。它讓我從一個只會寫簡單 Java 邏輯的初學者,蛻變成一個有信心能從零到一,搭建出一個具備完整 API 和資料庫功能的後端應用的開發者。接下來,我迫不及待想用所學的知識,開始動手打造自己的小專案了!