Spring Boot 學習路線,本文計劃根據做者近幾年的工做、學習經驗,來分析和制定一個學習使用 Spring Boot技術的步驟路線圖。java
SpringBoot是伴隨着Spring4.0誕生的; SpringBoot的目標是簡化Spring的開發過程、讓開發者快速搭建框架和web容器。併爲微服務提供更好的支持,提供服務監控能力。Spring爲開發者帶來了簡單和能力:web
Spring Boot使編碼變簡單spring
Spring Boot使配置變簡單編程
Spring Boot使監控變簡單微信
Spring Boot使部署變簡單網絡
1、準備工做架構
俗話說:「工欲善其事必先利其器」。特別是軟件開發,這樣一個重視工程實踐的領域,必定要最早選擇和熟悉一系列的開發環境工具。mvc
首先推薦選用最新版本技術標準的開發工具,將以下的開發環境安裝配置好。框架
開發環境:maven
(1)JDK 1.8
(2)Eclipse Oxygen EE版本 或者也可使用 IntelliJ IDEA
(3)Tomcat 9(不須要,Spring Boot 中有內置的servlet容器)
安裝配置好了,如上的開發工具後,能夠在環境下,去新建普通的Java project、Dynamic web project,作一個「Hello World」式的入門程序,去驗證環境能夠正常使用。
而後,就能夠進入到 Spring Boot 的技術學習了!
2、Spring Boot 知識入門
對計算機技術知識的學習和使用,我建議理論聯繫實踐。在不少時候,咱們接觸到一個新的技術的時候,最開始,確定是被這些技術涉及到的術語、詞彙所困擾,不明白這些技術術語詞彙的定義、概念、含義,沒有這些作根基,就很難作到掌握和學習這個技術,並達到融匯貫通的程度。
因此,學習 Spring Boot ,首先就要從宏觀的層面上,去了解這個技術它的背景知識、運用場景、發展淵源,演進歷史,這一塊,能夠經過在網絡上搜索到大量的知識介紹。
建議訪問spring官網:https://spring.io/ 去獲取最權威的介紹和定義。
我這裏,強調一點:Spring Boot 運用「約定優於配置」的思想,對使用 Spring Boot建立的工程,提供約定、缺省、默認的配置,去簡化傳統手動、一步一步配置的開發方式;
3、Spring 技術基礎知識
這一部分技術知識,已是 Java EE開發必備的知識。包括IOC 和 AOP,重點要把IOC弄清楚,其次再說AOP。
一、Bean工廠
Spring中,存在一個 Bean工廠。咱們把每個java類當作是一個 bean(即豌豆),Spring就能夠當作是一個factory(工廠),bean factory(豌豆工廠)的功能就是專門生產bean的。也就是說:Spring 能夠去生產類的對象,也即 實例化類對象(new 類名();)。
二、IOC/DI 控制反轉/依賴注入
重新建一個Dynamic Web project開始,在工程項目中,引入 最新版本的 Spring jar包,配置使用Spring,熟悉Spring框架在項目中,所起到的做用。重點學習瞭解IOC/DI,即「控制反轉、依賴注入」
簡單的說清楚,IOC產生的緣由,及解決的問題。
在「三層結構」(表示層、業務邏輯層、數據訪問層)架構開發中,層與層之間,類有調用依賴的關係
表示層——>業務邏輯層——>數據訪問層,表示層類中,須要調用業務邏輯層類的方法;業務邏輯層類中,須要調用數據訪問層類的方法。
以用戶登陸、註冊、用戶我的資料維護爲例:設計3個類 UserController, UserService, UserDao ,分別對應「三層結構」的表示層、業務邏輯層、數據訪問層。
那麼,在項目實際開發代碼中,存在:
表示層類 UserController 中,要引用 UserService:
public Class UserController { UserService userService = new UserService(); …… }
業務邏輯層類 UserService 中,要引用 UserDao:
public Class UserService { UserDao userDao = new UserDao(); …… }
咱們會發現 類與類之間,有很緊密的依賴關係,即:在代碼裏,一個類中,引用了另一個類,並 new 了一個對象。
這樣,也就意味着有很強的耦合性。而這樣,是不建議的。
由於軟件設計中,很強調的是設計出來的軟件須要具備很好的「特性:「高內聚、鬆耦合」。
爲了解耦,下降這種很強的依賴性,Spring 框架中,設計出了 IOC。
代碼中,不去 維護類與類之間的依賴性,也即: UserController 中不去new UserService()
而是去這樣寫:
public Class UserController { //UserService userService = new UserService(); UserService userService; …… }
那麼 實例化UserService,即 new UserService();在哪裏操做?
交給Spring 的bean工廠,去實例化。
如何去實例化類對象,有哪些須要約定,這就須要一個 xml配置文件去記錄。後來,可使用annotation(註解)的方式去配置屬性。
spring配置文件:
<bean id="cat" class="test.spring.Cat" scope="prototype"> <property name="name" value="波斯貓"></property> </bean>
三、AOP
面向切面編程,主要解決橫切性的問題。
什麼是橫切性的問題?好比開發中,有不少的類、不少的方法,類與類之間存在調用的依賴的關係,咱們稱之爲「從上而下」的線性調用。在這些代碼中,常常須要在不少位置,添加「打印日誌」的代碼。而這些,「打印日誌」的代碼,基本都是同樣的,和「從上而下」的線性調用,沒有什麼直接的業務邏輯關係。咱們能夠稱之爲:橫切到這個「從上而下」的線性中。就像一個「十字」、「垂直」、「正交」這樣。
除了「日誌」屬於橫切性問題,「事務」也屬於。
AOP就是爲了解決這種橫切性的問題,經過配置,不讓這些相同的代碼,充斥在項目代碼的各處。而是經過,不多的配置,把這些類似的橫切性代碼,配置到它們應該出現的位置。
AOP也須要了解一些,專門的術語,咱們這裏只是簡單的介紹一下,AOP須要說清楚,還要寫專門的文章,去舉例和描述。
4、Maven、Gradle
簡單的說:Maven 和 Gradle 都是解決相同的問題,就是咱們在建立Java相關的項目工程時,項目中常常須要使用各類 框架或類庫的.jar 包。傳統入門的方式,是去專門的官網,去下載好這些jar包,複製粘貼到項目中,而後「Add to buildpath」。這樣會形成一些問題。
(1)一些框架的 jar包有不少個,在項目中使用時,它們jar包之間存在依賴關係;
(2)隨着時間的遷移,同一個 .jar 包,會不斷的推出新的版本,新舊版本間可能會有衝突問題。
(3)同一個項目,可能會使用好幾個框架,這些框架中,都使用了一些相同的jar包,版本之間如何統一。
(4)同一臺電腦中,建立多個工程,每一個工程都使用了相同的框架,傳統方式的結果就是,這些框架的jar包在電腦中,複製不少次。
……
Maven 和 Gradle 的出現就是,去維護和管理這些jar包。使得,只用去寫一個配置文件,就能夠自動的去使用這些jar包。
maven配置文件 pom.xml
<!-- spring begin --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency>
5、Spring Boot 的 Hello World程序
在Eclipse中,建立一個 使用 Spring Boot 技術的 Hello World程序。去初步的體驗,和接觸Spring Boot ,有個直觀的感覺和印象。有助於後面慢慢的去深刻了解和學習掌握這個技術。
參考:
(1)目標:
(2)體系
6、Spring Boot 和 Spring、Spring Cloud 的 聯繫與區別
SpringBoot是基於Maven來管理Jar包的。首先咱們須要在Idea中配置咱們Maven的本地倉庫位置
掃個紅包吧!
Donate捐贈
若是個人文章幫助了你,能夠讚揚我 1 元,讓我繼續寫出更好的內容)
(微信) (支付寶)
微信/支付寶 掃一掃