1. 程式人生 > >國內一線架構師提供的Spring Boot學習路線

國內一線架構師提供的Spring Boot學習路線

Spring Boot 學習路線,本文計劃根據作者多年經驗,來分析和制定一個學習使用 Spring Boot技術的步驟路線圖。

一、準備工作

俗話說:“工欲善其事必先利其器”。特別是軟體開發,這樣一個重視工程實踐的領域,一定要最先選擇和熟悉一系列的開發環境工具。

首先推薦選用最新版本技術標準的開發工具,將如下的開發環境安裝配置好。

開發環境:

(1) JDK 1.8

(2) Eclipse Oxygen EE版本 或者也可以使用 IntelliJ IDEA

(3) Tomcat 9

安裝配置好了,如上的開發工具後,可以在環境下,去新建普通的Java project、Dynamic web project,做一個“Hello World”式的入門程式,去驗證環境可以正常使用。

然後,就可以進入到 Spring Boot 的技術學習了!

二、Spring Boot 知識入門

對計算機技術知識的學習和使用,我建議理論聯絡實際。在很多時候,我們接觸到一個新的技術的時候,最開始,肯定是被這些技術涉及到的術語、詞彙所困擾,不明白這些技術術語詞彙的定義、概念、含義,沒有這些做根基,就很難做到掌握和學習這個技術,並達到融匯貫通的程度。

所以,學習 Spring Boot ,首先就要從巨集觀的層面上,去了解這個技術它的背景知識、運用場景、發展淵源,演進歷史,這一塊,可以通過在網路上搜索到大量的知識介紹。

建議訪問spring官網:https://spring.io/ 去獲取最權威的介紹和定義。

我這裡,強調一點:Spring Boot 運用“約定優於配置”的思想,對使用 Spring Boot建立的工程,提供約定、預設、預設的配置,去簡化傳統手動、一步一步配置的開發方式;

三、Spring 技術基礎知識

這一部分技術知識,已經是 Java EE開發必備的知識。包括IOC 和 AOP,重點要把IOC弄清楚,其次再說AOP。

1、Bean工廠

Spring中,存在一個 Bean工廠。我們把每一個java類當做是一個 bean(即豌豆),Spring就可以當做是一個factory(工廠),bean factory(豌豆工廠)的功能就是專門生產bean的。也就是說:Spring 可以去生產類的物件,也即 例項化類物件(new 類名();)。

2、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>

3、AOP

面向切面程式設計,主要解決橫切性的問題。

什麼是橫切性的問題?比如開發中,有很多的類、很多的方法,類與類之間存在呼叫的依賴的關係,我們稱之為“從上而下”的線性呼叫。在這些程式碼中,經常需要在很多位置,新增“列印日誌”的程式碼。而這些,“列印日誌”的程式碼,基本都是一樣的,和“從上而下”的線性呼叫,沒有什麼直接的業務邏輯關係。我們可以稱之為:橫切到這個“從上而下”的線性中。就像一個“十字”、“垂直”、“正交”這樣。

除了“日誌”屬於橫切性問題,“事務”也屬於。

AOP就是為了解決這種橫切性的問題,通過配置,不讓這些相同的程式碼,充斥在專案程式碼的各處。而是通過,很少的配置,把這些相似的橫切性程式碼,配置到它們應該出現的位置。

AOP也需要了解一些,專門的術語,我們這裡只是簡單的介紹一下,AOP需要說清楚,還要寫專門的文章,去舉例和描述。

四、Maven、Gradle

簡單的說:Maven 和 Gradle 都是解決相同的問題,就是我們在建立Java相關的專案工程時,專案中經常需要使用各種 框架或類庫的.jar 包。傳統入門的方式,是去專門的官網,去下載好這些jar包,複製貼上到專案中,然後“Add to buildpath”。這樣會造成一些問題。

(1)一些框架的 jar包有很多個,在專案中使用時,它們jar包之間存在依賴關係;

(2)而且隨著時間的遷移,會不斷的推出新的版本,新舊版本間可能會有衝突問題。

(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>

複製程式碼

五、Spring Boot 的 Hello World程式

在Eclipse中,建立一個 使用 Spring Boot 技術的 Hello World程式。去初步的體驗,和接觸Spring Boot ,有個直觀的感受和印象。有助於後面慢慢的去深入瞭解和學習掌握這個技術。

在此我向大家推薦一個Java架構群 :375989619 裡面會分享一些資深架構師錄製的視訊錄影:(有Spring,MyBatis,Netty原始碼分析,高併發、高效能、分散式、微服務架構的原理,JVM效能優化、分散式架構)等這些成為架構師必備的知識體系 進群馬上免費領取,目前受益良多!