我與Spring Boot的相識,在那堂講述SSH架構配置課程後,依稀記得那是一個陽光燦爛的午後,我剛被課程裡面的各種XML設定搞得頭痛欲裂,在上廁所的時候,突然聽到旁邊的同學說到:
...... Boot
我:「什麼Boot啊?」
同學:「你想懂?我這裡有一些好康的.......」
接著~ 我就進入了一個嶄新的世界~~
在Spring Boot官網介紹的第一句
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run"
一言以蔽之,就是希望開發者可以不用費心在環境的設定上,Spring Boot已經都幫你包裝好或預設好了。除此之外,Spring Boot最大的優勢是可以單獨啟動,你不需要去啟動server然後設定專案路徑才能看到網頁畫面,
這些Spring Boot都幫你做好了。
還有另一個優勢是不用再寫xml了,終於不用因為忘記註冊元件,然後啟動專案才發現.....阿勒怎麼沒結果。
此外在啟動時,Spring Boot也會幫你檢查是否容器已經註冊。
除了讚揚Spring Boot的方便之外,我們還要提到一些Spring Boot重要的核心理念
1.Inversion of Control (IoC) (控制反轉)
控制反轉是一種思想,其核心就是我們要讓容易變動的程式碼依賴穩定的程式。
在正式的開發環境中,一個業務邏輯會以多個類共同合作來實現功能,如果類與類之間的關係都要由工程師去一個一個確認的話,容易造成混淆,因此我們可以透過一個IoC容器去統一管理。
2.Dependency Injection(DI) 依賴注入
我們把容易變動的應用程式(ex:訂單系統、用戶系統....等)單獨抽出、統一管理,讓主要程式(流程)
不會因為應用程式的變動而跟著一起改變,
另外透過依賴注入我們也可以省去撰寫額外的code、也不用去想說注入的類要怎麼實現,這些框架都會幫我們做好。
此外我們也可以把設計好的組件交給框架統一管理,就可以省去一直創建組件的麻煩了。
3.Convention Over Configuration(約定優於配置)
舉例來說,Spring Boot JPA就是一個範例,透過簡單的配置可以讓Java類名與資料庫的表單名稱對應,屬性名與欄位名稱對應,如此一來我們便可以操作Java物件如同操作資料一樣,這樣的觀念在Spring Boot配置中無處不在,使得使用者可以擺脫繁瑣的配置工作。
其實就是Spring Boot已經事先先把一些規則設定好,如果開發者沒有特別的需要客製化,那就照預設的規定走,有的話再按照使用者的配置進行,使得開發者可以省去大量的配置時間。
當然Spring Boot還有很多核心理念我在此處尚未介紹,我把連結提供在下面,有興趣的話可以點進去觀看。
Spring Boot官網
控制反轉的精神及實踐
Spring Boot的設計理念